Skip to content

trK54Ylmz/elasticsearch-php-thrift

Repository files navigation

Elasticsearch PHP Thrift transport client

Low-level Elasticsearch Thrift transport plugin. The library is compatible with Elasticsearch 1.3.X

Requirements

  • Apache Thrift 0.9 or higher
  • Elasticsearch 1.0.0 or higher with Thrift transport plugin

[https://github.com/elasticsearch/elasticsearch-transport-thrift]

Performance

Elasticsearch Thrift Client (Thrift extension installed) almost 3x times faster than Elasticsearch Official PHP Client

Usage

  1. Install Thrift C++ Transport Extension for performance (Optional but recommended)

    cd lib/ThriftExt/thrift_protocol
    phpize --clean && phpize
    ./configure
    make
    sudo make install
  2. Create composer.json:

    {
        "require" : {
            "trk54ylmz/elasticsearch-thrift": "dev-master"
        }
    }
  3. Include vendor/autoload.php

Search

require 'vendor/autoload.php';

$elasticsearch = new Elasticsearch\Client();

$body = '
{
    "query" : {
        "match_all" : {}
    }
}
';

$elasticsearch->setIndex('twitter');
$elasticsearch->setType('users');
$elasticsearch->setBody($body);

$result = $elasticsearch->search();

var_dump($result->hits);

Index a document

$elasticsearch = new Elasticsearch\Client();

$body = array(
    'username' => 'trK54Ylmz',
    'email' => '[email protected]',
    'country' => 'TR',
    'logged' => false
);

$elasticsearch->setIndex('twitter');
$elasticsearch->setType('users');
$elasticsearch->setBody($body);

$result = $elasticsearch->index();

Get a document

$elasticsearch = new Elasticsearch\Client();

$elasticsearch->setIndex('twitter');
$elasticsearch->setType('users');
$elasticsearch->setId('1');

$result = $elasticsearch->get();

Update a document

$elasticsearch = new Elasticsearch\Client();

$body = array(
    'doc' => array(
        'logged' => false
    )
);

$elasticsearch->setIndex('twitter');
$elasticsearch->setType('users');
$elasticsearch->setId('1');
$elasticsearch->setBody($body);

$elasticsearch->update();

Delete a document

$elasticsearch = new Elasticsearch\Client();

$elasticsearch->setIndex('twitter');
$elasticsearch->setType('users');
$elasticsearch->setId('1');

$elasticsearch->delete();

Todo

  1. Advanced DSL
  2. Mapping feature
  3. Cluster management

Releases

No releases published

Packages

No packages published