CakePHP ElasticsearchSource is DataSource Plugin for Elasticsearch
Step 1: Clone or download HttpSource
cd my_cake_app/app git://github.com/imsamurai/CakePHP-ElasticsearchSource-Datasource.git Plugin/ElasticsearchSource
or if you use git add as submodule:
cd my_cake_app
git submodule add "git://github.com/imsamurai/CakePHP-ElasticsearchSource-Datasource.git" "app/Plugin/ElasticsearchSource"
then update submodules:
git submodule init
git submodule update
:: database.php ::
public $elasticsearch = array(
'datasource' => 'ElasticsearchSource.Http/ElasticsearchSource',
'host' => 'example.com',
'port' => 'some port'
);
public $elasticsearchTest = array(
'datasource' => 'ElasticsearchSource.Http/ElasticsearchSource',
'host' => 'localhost',
'prefix' => '',
'port' => 9200,
'timeout' => 5
);
Then make model
:: Elasticsearch.php ::
public $useDbConfig = 'elasticsearch';
public $useTable = '<desired endpoint, for ex: "_search">';
:: bootstrap.php ::
CakePlugin::load('HttpSource', array('bootstrap' => true, 'routes' => true));
CakePlugin::load('ElasticsearchSource', array('bootstrap' => false, 'routes' => true));
#Tests
To run tests add and fill $elasticsearchTest in database.php
#Usage
You can use elasticsearch almost as db tables:
$this->Elasticsearch->setSource('search');
$params = array(
'conditions' => array(
'query' => array(
"term" => array("title" => "apple")
)
),
'fields' => array('title', 'rank'),
'order' => array('rank' => 'desc'),
'offset' => 2
);
$result = $this->Elasticsearch->find('first', $params);
#Documentation
Please read HttpSource Plugin README