Elasticsearch Datasource for CakePHP

ES REST api plugin

API Documentation

Check out ElasticsearchSource API Documentation

Abstract

Build Status Coverage Status Latest Stable Version Total Downloads Latest Unstable Version License

CakePHP ElasticsearchSource is DataSource Plugin for Elasticsearch

Installation

Step 1: Clone or download HttpSource

Step 2: Clone or download to Plugin/ElasticsearchSource

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

Step 3: Add your configuration to database.php and set it to the model

:: 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">';

Step 4: Load plugin

:: 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);

HttpSource Documentation

Please read HttpSource Plugin documentation