在ElasticSearch中,每个过滤器的点击率是多少



给定以下查询,如何独立获得每个范围和术语查询的命中数,这对性能有什么影响?到目前为止,我在文档中找不到任何指示如何执行此操作的内容。我在哪里可以找到这样一个功能的文档?

{
"query": {
"bool" : {
"must" : {
"term" : { "user.id" : "kimchy" }
},
"filter": {
"term" : { "tags" : "production" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 10, "lte" : 20 }
}
},

您可以使用过滤器聚合来获取每个查询子句的文档计数。由于您还提供查询,所以需要将全局聚合与筛选器聚合一起使用。如果您不使用全局聚合,那么它将返回基于顶级查询的计数,并且您将无法获得特定查询子句的总文档。

以下是带有聚合的示例查询:

{
"query": {
"bool": {
"must": {
"term": {
"user.id": "kimchy"
}
},
"filter": {
"term": {
"tags": "production"
}
},
"must_not": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
},
"aggs": {
"Total": {
"global": {},
"aggs": {
"user_term": {
"filter": {
"term": {
"user.id": "kimchy"
}
}
},
"tag_term": {
"filter": {
"term": {
"tags": "production"
}
}
},
"age_range_not": {
"filter": {
"bool": {
"must_not": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
}
},
"age_range": {
"filter": {
"range": {
"age": {
"gte": 10,
"lte": 20
}
}
}
}
}
}
}
}

您将得到以下回复:

"aggregations" : {
"Total" : {
"doc_count" : 3,
"age_range" : {
"doc_count" : 2
},
"age_range_not" : {
"doc_count" : 1
},
"tag_term" : {
"doc_count" : 3
},
"user_term" : {
"doc_count" : 2
}
}
}

最新更新