使用 pyes 构建 ElasticSearch 搜索



此示例代码的目标是弄清楚如何创建由多个筛选器和查询组成的查询。

以下示例未按预期工作。

  1. 我希望能够仅在包含某个"键"的文档上执行搜索。 我试图通过 ExistsFilter 达到的目标,但在启用时我没有得到任何结果。

有什么指示可以澄清这个问题吗?

#!/usr/bin/python
import pyes
conn = pyes.ES('sandbox:9200')
conn.index('{"test":{"field1":"value1","field2":"value2"}}','2012.9.23','test')
filter = pyes.filters.BoolFilter()
filter.add_must(pyes.filters.LimitFilter(1))
filter.add_must(pyes.filters.ExistsFilter('test')) #uncommenting this line returns the documents
query = pyes.query.BoolQuery()
query.add_must(pyes.query.TextQuery('test.field1','value1'))
query.add_must(pyes.query.TextQuery('test.field2','value2'))
search = pyes.query.FilteredQuery(query, filter)
for reference in conn.search(query=search,indices=['2012.9.23']):
    print reference

我不使用 pyes(也不是 python)。但是,我在这里可以看到的是,如果我与ExistsFilter文档进行比较,则ExistsFilter中似乎缺少某些信息:

{
    "constant_score" : {
        "filter" : {
            "exists" : { "field" : "user" }
        }
    }
}

可能是你的问题吗?

最新更新