saxulum / saxulum-elasticsearch-querybuilder
该包已被废弃,不再维护。未建议替代包。
用于 Elasticsearch 的查询构建器
3.3.0
2018-07-20 08:52 UTC
Requires
- php: ~7.0
Requires (Dev)
- phpunit/phpunit: ^6.5.8
Suggests
- saxulum/saxulum-elasticsearch-querybuilder-generator: Generates a query builder based on a existing json query
README
功能
- 一个简单易用、灵活的 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);