給定以下查詢,如何獨立獲取每個范圍和術語查詢的命中數,這對性能有何影響?到目前為止,我在檔案中找不到任何指示如何執行此操作的內容。我在哪里可以找到此類功能的檔案?
{
"query": {
"bool" : {
"must" : {
"term" : { "user.id" : "kimchy" }
},
"filter": {
"term" : { "tags" : "production" }
},
"must_not" : {
"range" : {
"age" : { "gte" : 10, "lte" : 20 }
}
},
uj5u.com熱心網友回復:
您可以使用過濾器聚合來獲取每個查詢子句的檔案計數。當您也提供查詢時,您需要將全域聚合與過濾聚合一起使用。如果您不使用全域聚合,那么它將根據頂級查詢回傳計數,您將無法獲得特定查詢子句的總檔案。
下面是帶有聚合的示例查詢:
{
"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
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448770.html
標籤:弹性搜索
上一篇:彈性搜索-僅存盤欄位
