项目作者: Ethennoob

项目描述 :
laravel的elasticsearch轮子
高级语言: PHP
项目地址: git://github.com/Ethennoob/laravel-elasticsearch.git
创建时间: 2020-02-14T09:07:25Z
项目社区:https://github.com/Ethennoob/laravel-elasticsearch

开源协议:MIT License

下载


Laravel Elasticsearch

版本对应

Elasticsearch Version laravel-elasticsearch Branch
>= 7.0 1.*

Install

You can install the package via composer:

  1. composer require lingxiang/laravel-elasticsearch

Laravel

服务区提供者,门面配置 config / app.php

  1. 'providers' => [
  2. Lingxiang\Elasticsearch\LaravelServiceProvider::class
  3. ]
  1. 'aliases' => [
  2. 'Elasticsearch' => Lingxiang\Elasticsearch\LaravelServiceFacade::class
  3. ]

创建config配置search.php

  1. php artisan vendor:publish --provider="Lingxiang\Elasticsearch\LaravelServiceProvider"

简单上手

Create

  1. $result = \Elasticsearch::index('index')->type('type')->create([
  2. 'key' => 'value',
  3. 'key2' => 'value2',
  4. ]);

Update

  1. $result = \Elasticsearch::index('index')->type('type')->update('id',[
  2. 'key' => 'value2',
  3. ]);
  4. dump($result);

Delete

  1. $result = \Elasticsearch::index('index')->type('type')->delete('id');
  2. dump($result);

Select

  1. //指定索引index和type
  2. $builder = \Elasticsearch::index('laisiou_test')->type('user');
  3. //全查询,但因ES聚合查询引擎的原因只能返回10条
  4. $result = $builder->get();
  5. //骚操作全查询
  6. $result = $builder->take($builder->count())->get();
  7. //根据id查询一条 注:查询不到则返回 null
  8. $result = $builder->whereTerm('id',1)->first();
  9. //子条件查询
  10. $result = $builder->where(function ($inQuery) {
  11. $inQuery->whereTerm('key',1)->orWhereTerm('key',2)
  12. })->whereTerm('key1',1)->get();

更多查询

skip / take

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

term query

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

match query

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

range query

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

where in query

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

logic query

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

nested query

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

所有可用条件方法

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

获取结果的方法

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

日志

  1. $builder->enableQueryLog();

Elastisearch object

  1. \Elasticsearch::getElasticSearch() // 或者 \Elasticsearch::search()

License

MIT license