1. Go to this page and download the library: Download kvz/elasticsearch library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kvz / elasticsearch example snippets
class DATABASE_CONFIG {
public $elastic = array(
'host' => '127.0.0.1',
'port' => '9200',
);
// ... etc
public $actsAs = array(
'Elasticsearch.Searchable' => array(
'index_chunksize' => 1000, // per row, not per parent object anymore..
'index_find_params' => '
SELECT
`tickets`.`cc` AS \'Ticket/cc\',
`tickets`.`id` AS \'Ticket/id\',
`tickets`.`subject` AS \'Ticket/subject\',
`tickets`.`from` AS \'Ticket/from\',
`tickets`.`created` AS \'Ticket/created\',
`customers`.`customer_id` AS \'Customer/customer_id\',
`customers`.`name` AS \'Customer/name\',
`ticket_responses`.`id` AS \'TicketResponse/{n}/id\',
`ticket_responses`.`from` AS \'TicketResponse/{n}/from\',
`ticket_responses`.`created` AS \'TicketResponse/{n}/created\'
FROM `tickets`
LEFT JOIN `ticket_responses` ON `ticket_responses`.`ticket_id` = `tickets.id`
LEFT JOIN `customers` ON `customers`.`customer_id` = `tickets`.`customer_id`
WHERE 1=1
{single_placeholder}
{offset_limit_placeholder}
',
),
// ... etc
);
public $actsAs = array(
'Elasticsearch.Searchable' => array(
'debug_traces' => false,
'searcher_enabled' => false,
'searcher_action' => 'searcher',
'searcher_param' => 'q',
'searcher_serializer' => 'json_encode',
'fake_fields' => array(
'_label' => array('Product/description', 'BasketItem/description'),
),
'index_name' => 'main',
'index_chunksize' => 10000,
'index_find_params' => array(
'limit' => 1,
'fields' => array(
// It's important you name your fields.
'subject',
'from',
),
'contain' => array(
'Customer' => array(
// It's important you name your fields.
'fields' => array(
'id',
'name',
),
),
'TicketResponse' => array(
// It's important you name your fields.
'fields' => array(
'id',
'content',
'created',
),
),
'TicketObjectLink' => array(
// It's important you name your fields.
'fields' => array(
'foreign_model',
'foreign_id',
),
),
'TicketPriority' => array(
// It's important you name your fields.
'fields' => array(
'code',
'from',
),
),
'TicketQueue' => array(
// It's important you name your fields.
'fields' => array(
'name',
),
),
),
'order' => array(
'Ticket.id' => 'DESC',
),
),
'highlight' => array(
'pre_tags' => array('<em class="highlight">'),
'post_tags' => array('</em>'),
'fields' => array(
'_all' => array(
'fragment_size' => 200,
'number_of_fragments' => 1,
),
),
),
'realtime_update' => false,
'error_handler' => 'php',
'static_url_generator' => array('{model}', 'url'),
'enforce' => array(
'Customer/id' => 123,
// or a callback: '#Customer/id' => array('LiveUser', 'id'),
),
'highlight_excludes' => array(
// if you're always restricting results by customer, that
// query should probably not be part of your highlight
// instead of dumping _all and going over all fields except Customer/id,
// you can also exclude it:
'Customer/id',
),
),
);
public $components = array(
'Elasticsearch.Searcher',
// ... etc
);
class SearchersController extends AppController {
public $components = array(
'Elasticsearch.Searcher' => array(
'model' => '_all',
'leading_model' => 'Ticket',
),
// ... etc
);
public function searcher () {
$this->Searcher->searchAction($this->RequestHandler->isAjax());
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.