PHPackages                             yuancode/esbuilder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. yuancode/esbuilder

ActiveLibrary[Search &amp; Filtering](/categories/search)

yuancode/esbuilder
==================

elasticsearch query builder

v1.0.2(3y ago)191PHPPHP ^7.0

Since Apr 1Pushed 3y ago1 watchersCompare

[ Source](https://github.com/lyuangg/esbuilder)[ Packagist](https://packagist.org/packages/yuancode/esbuilder)[ RSS](/packages/yuancode-esbuilder/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (2)Versions (4)Used By (0)

esbuilder 提供一个 Elasticsearch 的查询构造器, 像使用 Laravel 一样.

安装
--

[](#安装)

```
composer require 'yuancode/esbuilder'

```

使用
--

[](#使用)

### 创建一个 es client

[](#创建一个-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 操作

[](#使用-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 的数据

[](#分组查询-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

[](#boost-_score)

```
$query = Builder::client($client)
    ->index('testes')
    ->orWhere('name', '=', 'aaa', 10)
    ->orWhere('name', '=', 'bbb', 20)
    ->orderBy('_score', 'desc')
    ->take(10)
    ->get();
```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~269 days

Total

3

Last Release

1335d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/0fd097eca0ea45d1120df4fb015dd70ed1624451c55da36d0930ec2587c191a7?d=identicon)[yuancode](/maintainers/yuancode)

---

Top Contributors

[![lyuangg](https://avatars.githubusercontent.com/u/7565707?v=4)](https://github.com/lyuangg "lyuangg (8 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/yuancode-esbuilder/health.svg)

```
[![Health](https://phpackages.com/badges/yuancode-esbuilder/health.svg)](https://phpackages.com/packages/yuancode-esbuilder)
```

###  Alternatives

[ruflin/elastica

Elasticsearch Client

2.3k50.4M203](/packages/ruflin-elastica)[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

934529.3k2](/packages/mailerlite-laravel-elasticsearch)[ongr/elasticsearch-dsl

Elasticsearch DSL library

46411.9M45](/packages/ongr-elasticsearch-dsl)[matchish/laravel-scout-elasticsearch

Search among multiple models with ElasticSearch and Laravel Scout

7431.6M2](/packages/matchish-laravel-scout-elasticsearch)[jeroen-g/explorer

Next-gen Elasticsearch driver for Laravel Scout.

397612.3k](/packages/jeroen-g-explorer)[ongr/elasticsearch-bundle

Elasticsearch bundle for Symfony.

3151.1M15](/packages/ongr-elasticsearch-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
