saxulum/saxulum-elasticsearch-querybuilder

该包已被废弃,不再维护。未建议替代包。

用于 Elasticsearch 的查询构建器

3.3.0 2018-07-20 08:52 UTC

README

Build Status Total Downloads Latest Stable Version Scrutinizer Code Quality Code Coverage

功能

  • 一个简单易用、灵活的 Elasticsearch 查询构建器。

要求

  • php: ~7.0

建议

  • saxulum/saxulum-elasticsearch-querybuilder-generator: ~1.0

安装

通过 Composer 作为 saxulum/saxulum-elasticsearch-querybuilder 安装。

composer require saxulum/saxulum-elasticsearch-querybuilder "~3.3"

使用方法

重要:默认情况下,空节点不会序列化。NullNode 强制序列化 null 值。

  • ArrayNode (没有元素)
  • BoolNode (null)
  • ObjectNode (没有元素)
  • FloatNode (null)
  • IntNode (null)
  • StringNode (null)

这是递归工作的,这意味着理论上复杂的查询构建器可能导致 JSON 查询为空字符串。

检查 allowSerializeEmpty 参数,如果需要防止这种情况。

QueryBuilder

use Saxulum\ElasticSearchQueryBuilder\Node\ArrayNode;
use Saxulum\ElasticSearchQueryBuilder\Node\FloatNode;
use Saxulum\ElasticSearchQueryBuilder\Node\IntNode;
use Saxulum\ElasticSearchQueryBuilder\Node\ObjectNode;
use Saxulum\ElasticSearchQueryBuilder\Node\StringNode;

$qb = ObjectNode::create()
    ->add('query', ObjectNode::create()
        ->add('bool', ObjectNode::create()
            ->add('must', ObjectNode::create()
                ->add('term', ObjectNode::create()
                    ->add('user', StringNode::create('kimchy'))
                )
            )
            ->add('filter', ObjectNode::create()
                ->add('term', ObjectNode::create()
                    ->add('tag', StringNode::create('tech'))
                )
            )
            ->add('must_not', ObjectNode::create()
                ->add('range', ObjectNode::create()
                    ->add('age', ObjectNode::create()
                        ->add('from', IntNode::create(10))
                        ->add('to', IntNode::create(20))
                    )
                )
            )
            ->add('should', ArrayNode::create()
                ->add(ObjectNode::create()
                    ->add('term', ObjectNode::create()
                        ->add('tag', StringNode::create('wow'))
                    )
                )
                ->add(ObjectNode::create()
                    ->add('term', ObjectNode::create()
                        ->add('tag', StringNode::create('elasticsearch'))
                    )
                )
            )
            ->add('minimum_should_match', IntNode::create(1))
            ->add('boost', FloatNode::create(1.1))
        )
    );

echo $qb->json(true);

其他示例

转换器