使用pyes使用exists构建ElasticSearch搜索

时间:2012-09-24 09:03:39

标签: python elasticsearch pyes

此示例代码的目标是弄清楚如何创建包含多个过滤器和查询的查询。

以下示例未按预期工作。

  1. 我希望能够仅对包含某个“密钥”的文档执行搜索。这就是我想用ExistsFilter达到的目标,但是在启用时我没有得到任何结果。
  2. 有任何指示要澄清这个问题吗?

    #!/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
    

1 个答案:

答案 0 :(得分:0)

我不使用pyes(也不使用python)。但是,我在这里看到的是,如果我与ExistsFilter文档进行比较,ExistsFilter中似乎会遗漏一些信息:

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

这可能是你的问题吗?