crcms/elasticsearch

使用SQL语句查询elasticsearch

1.0.2 2019-12-17 10:11 UTC

This package is auto-updated.

Last update: 2024-09-26 18:29:18 UTC


README

Latest Stable Version License StyleCI

版本矩阵

安装

您可以通过composer安装此包

composer require crcms/elasticsearch

如果您想使用最新版本 dev-master,请安装

使用

非Laravel框架

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

Laravel

如果版本小于等于5.5,请修改config / app.php

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

如果您想在配置文件中进行配置更改,可以使用以下Artisan命令发布它

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

快速开始

创建

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

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

更新

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

删除

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

选择

$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();

更多

跳过/获取

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

术语查询

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

匹配查询

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

范围查询

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

where in查询

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

逻辑查询

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

嵌套查询

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

可用条件

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

结果方法

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

日志

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

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

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

Elastisearch对象

getElasticSearch() // or search()

如果您想扩展更多功能,可以使用此方法,调用https://github.com/elastic/elasticsearch-php

其他

更多示例,请参阅测试用例https://github.com/crcms/elasticsearch/blob/master/tests/BuildTest.php

许可

MIT许可