yuancode/esbuilder
Composer 安装命令:
composer require yuancode/esbuilder
包简介
elasticsearch query builder
README 文档
README
esbuilder 提供一个 Elasticsearch 的查询构造器, 像使用 Laravel 一样.
安装
composer require 'yuancode/esbuilder'
使用
创建一个 es client
use Elasticsearch\ClientBuilder; use Yuancode\Es\Builder; $client = ClientBuilder::create()->setHosts(['localhost:9200'])->build(); $query = Builder::client($client);
设置索引
Builder::client($client)->index('testindex');
插入
$row = [ 'name' => '张三', 'age' => 8, 'created' => date("Y-m-d"), ]; $result = Builder::client($client) ->index('testes') ->id('1') //设置id ->insert($row);
批量插入
$rows = []; $grades = ['一年级', '二年级', '三年级']; for ($i = 1; $i < 10; $i++) { $rows[] = [ 'id' => $i, 'name' => '张三' . $i, 'age' => rand(7, 20), 'grade' => $grades[array_rand($grades)], ]; } $results = Builder::client($client)->index('testes')->insert($rows);
更新
$row = [ 'name' => '张三2', ]; $result = Builder::client($client) ->index('testes') ->update($row, '1');
删除
$result = Builder::client($client) ->index('testes') ->delete('1');
简单查询
$info = Builder::client($client) ->index('testes') ->find('1');
条件查询
$arr = Builder::client($client) ->index('testes') ->where('id', '1'); ->get();
过滤查询
$arr = Builder::client($client) ->index('testes') ->filter('id', '1'); ->get();
其他查询条件
$arr = Builder::client($client) ->index('testes') ->filter('id', '1'); ->where('age', '>', 10) ->where('age', '!=', 9) ->whereIn('id', [1,2,3]) ->whereNotIn('id', [4,5,6]) ->where('name', 'like', 'test') // match ->orWhere('name', 'zhangsna') ->get();
排序,去重
$arr = Builder::client($client) ->index('testes') ->where('age', '>', 10) ->orderBy('id', 'desc') ->distinct('name') ->select('name', 'age') ->get();
返回总数量
list($total, $arr) = Builder::client($client) ->index('testes') ->where('age', '>', 10) ->get(true); // or $total = Builder::client($client)->index('testes')->where('age', 10)->count();
指定数量
$arr = Builder::client($client) ->index('testes') ->where('age', '>', 10) ->from(0) ->take(10) ->get(); //使用 limit $arr = Builder::client($client) ->index('testes') ->where('age', '>', 10) ->limit(0, 10) ->get();
使用 boolen 操作
$arr = Builder::client($client) ->index('testes') ->filter('name', 's') ->must('aaa', 'bbb') ->must('aaa2', 'term', 'bbb') ->mustNot('ccc', 'dddd') ->should('aaa','sdlfks') ->get();
嵌套查询
$arr = Builder::client($client) ->index('testes') ->filter(function($query) { $query->where('name2', 'z') ->where('name3', 'a'); }) ->where('name', 'like', 'zhangsan') ->from(0) ->take(10) ->get(); //filter, where, orWhere, must, mustNot,should, 都支持嵌套查询
分组查询 topN 的数据
$arr = Builder::client($client) ->index('testes') ->groupBy('name') ->orderBy('age', 'desc') ->take(10) ->get();
返回查询
$query = Builder::client($client) ->index('testes') ->where('name', 'lskdjfls') ->take(10) ->toQuery(); print_r($query);
boost, _score
$query = Builder::client($client) ->index('testes') ->orWhere('name', '=', 'aaa', 10) ->orWhere('name', '=', 'bbb', 20) ->orderBy('_score', 'desc') ->take(10) ->get();
统计信息
- 总下载量: 9
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2021-04-01