Python elasticsearch仅返回具有特定字段的条目

时间:2016-06-20 20:17:41

标签: python elasticsearch elasticsearch-py

我正在尝试查询Elasticsearch,并且只获取具有特定字段的结果。

如何查询具有字段fields.EventData.PGID的文档并忽略不具有字段{<1}}的文档?

datadict = es.search(index=idx1, 
                     q='run_id:"Run001" AND "fields.EventData.PGID exists"', 
                     sort='fields.System.TimeCreated.SystemTime',
                     size=1000)

ES中记录事件的方式不一致,因此我只需要找到记录PGID的地方。我尝试在Python代码中尝试尝试从返回的值访问字段并忽略它,如果我得到一个KeyError,但由于限制你可以收到多少项作为查询结果,在某些情况下我有我的所有结果都缺少PGID,所以我最终浪费了一个查询而无法访问实际结果,因此我希望在查询级别进行此过滤。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此已过滤的查询

{
  "size": 1000,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": {
            "exists": {
              "field": "fields.EventData.PGID"
            },
            "term": {
              "run_id": "Run001"
            }
          }
        }
      }
    }
  }
}

我认为你也可以在查询中添加排序