yuancode/esbuilder 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2021-04-01

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固