Skip to content

simon28082/elasticsearch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crcms Elasticsearch

Latest Stable Version License StyleCI

Version Matrix

Elasticsearch Version crcms/elasticsearch Branch
>= 7.0 master(beta unstable)
>= 6.0 1.*
>= 5.0, < 6.0 0.*

Install

You can install the package via composer:

composer require crcms/elasticsearch

Please install if you want to use the latest version dev-master

Use

Non-Laravel framework

// select config path
$config = require 'search.php';
$builder = Factory::builder($config);

Laravel

Modify config / app.php If the version is less <= 5.5

'providers' => [
    CrCms\ElasticSearch\LaravelServiceProvider::class,
]

If you'd like to make configuration changes in the configuration file you can pubish it with the following Aritsan command:

php artisan vendor:publish --provider="CrCms\ElasticSearch\LaravelServiceProvider"

Quickstart

Create

$builder->index('index')->type('type')->create([
    'key' => 'value'
]);

// return a collection
$builder->index('index')->type('type')->createCollection([
    'key' => 'value'
]);

Update

$builder->index('index')->type('type')->update([
    'key' => 'value1'
]);

Delete

$builder->index('index')->type('type')->delete($result->_id);

Select

$builder = $builder->index('index')->type('type');
	
//SQL:select ... where id = 1 limit 1;
$result = $builder->whereTerm('id',1)->first();

//SQL:select ... where (key=1 or key=2) and key1=1
$result = $builder->where(function (Query $inQuery) {
    $inQuery->whereTerm('key',1)->orWhereTerm('key',2)
})->whereTerm('key1',1)->get();

More

skip / take

$builder->take(10)->get(); // or limit(10)
$builder->offset(10)->take(10)->get(); // or skip(10)

term query

$builder->whereTerm('key',value)->first();

match query

$builder->whereMatch('key',value)->first();

range query

$builder->whereBetween('key',[value1,value2])->first();

where in query

$builder->whereIn('key',[value1,value2])->first();

logic query

$builder->whereTerm('key',value)->orWhereTerm('key2',value)->first();

nested query

$result = $builder->where(function (Builder $inQuery) {
    $inQuery->whereTerm('key',1)->orWhereTerm('key',2)
})->whereTerm('key1',1)->get();

Available conditions

public function select($columns): self
public function where($column, $operator = null, $value = null, $leaf = 'term', $boolean = 'and'): self
public function orWhere($field, $operator = null, $value = null, $leaf = 'term'): self
public function whereMatch($field, $value, $boolean = 'and'): self
public function orWhereMatch($field, $value, $boolean = 'and'): self
public function whereTerm($field, $value, $boolean = 'and'): self
public function whereIn($field, array $value)
public function orWhereIn($field, array $value)
public function orWhereTerm($field, $value, $boolean = 'or'): self
public function whereRange($field, $operator = null, $value = null, $boolean = 'and'): self
public function orWhereRange($field, $operator = null, $value = null): self
public function whereBetween($field, array $values, $boolean = 'and'): self
public function whereNotBetween($field, array $values): self
public function orWhereNotBetween(string $field, array $values): self
public function whereExists($field, $boolean = 'and'): self
public function whereNotExists($field, $boolean = 'and'): self
public function orWhereBetween($field, array $values): self
public function orderBy(string $field, $sort): self
public function scroll(string $scroll): self
public function aggBy($field, $type): self
public function select($columns): self

Result Method

public function get(): Collection
public function paginate(int $page, int $perPage = 15): Collection
public function first()
public function byId($id)
public function byIdOrFail($id): stdClass
public function chunk(callable $callback, $limit = 2000, $scroll = '10m')
public function create(array $data, $id = null, $key = 'id'): stdClass
public function update($id, array $data): bool
public function delete($id)
public function count(): int

Log

//open log
$builder->enableQueryLog();

//all query log
dump($build->getQueryLog());

//last query log
dump($build->getLastQueryLog());

Elastisearch object

getElasticSearch() // or search()

If you want to expand more, you can use this method, call https://github.com/elastic/elasticsearch-php

Other

For more examples, please see test cases https://github.com/crcms/elasticsearch/blob/master/tests/BuildTest.php

License

MIT license