我正在尝试查询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,所以我最终浪费了一个查询而无法访问实际结果,因此我希望在查询级别进行此过滤。
答案 0 :(得分:1)
您可以尝试使用此已过滤的查询
{
"size": 1000,
"query": {
"filtered": {
"filter": {
"bool": {
"must": {
"exists": {
"field": "fields.EventData.PGID"
},
"term": {
"run_id": "Run001"
}
}
}
}
}
}
}
我认为你也可以在查询中添加排序