【发布时间】:2016-06-14 22:07:13
【问题描述】:
我正在尝试构建存储在某些数据结构(可能是树)中的任意嵌套查询。
From the manual 我认为filter 类型的查询是Bool 查询的特殊类型,所以
s = Search()
s = s.filter('terms', tags=['search', 'python'])
和
s = Search()
s = s.query('bool', filter=[Q('terms', tags=['search', 'python'])])
都是一样的。 我在我的查询中尝试了这个,但有些东西不能正常工作。
第一个查询有效并返回预期结果:
s = Search(using=client, index='index')
s = s.filter('term', some_field=some_value)
print(s.to_dict())
>>> {'query': {'filtered': {'filter': {'term': {'some_field': 'some_value'}}, \
'query': {'match_all': {}}}}}
在查询中模仿示例似乎不起作用:
s = Search(using=client, index='index')
s = s.query(Q('bool', filter=[Q('term', some_field=some_value])]))
print(s.to_dict())
>>> {'query': {'bool': {'filter': [{'term': {some_field': some_value}}]}}
请注意,我使用的是 ElasticSearch 版本 1,因为出于某种原因 AWS 尚未升级。
【问题讨论】:
标签: python elasticsearch elasticsearch-dsl