我有一個 test_entry 串列,它們都有一個“名稱”。我想為他們所有人做一個平均值。到目前為止,我所取得的成就是對我擁有的每個“名稱”提出請求。但是你可以猜到,它給我帶來了性能問題(因為我需要為每個“名稱”發出請求)
POST test_entry/_search
{
"query": {
"bool": {
"must": [
{ "match": { "name": "name1" }}
],
"filter": [
{ "range": { "Timestamp": {
"lte":"now/d"
}}
}
]
}
},
"size":0,
"aggs": {
"DoAvg": {
"avg": {
"field": "DO"
}
}
}
}
這個查詢會給我那個結果:
"aggregations" : {
"DoAvg" : {
"value" : 7.037004702415825
}
}
我想要做的是不將請求限制為一個名稱,而是在 avg.txt 中按名稱分隔結果。結果將如下所示:
"aggregations" : {
"DoAvg" : {
"name1"{
"value" : 7.03
},
"name2"{
"value" : 8.33
}
}
}
甚至更好,像這樣:
"aggregations" : {
"DoAvg" : {
"value" : 7.03,
"name" : "name1"
},
"DoAvg" : {
"value" : 8.33,
"name" : "name2"
}
}
這甚至可能嗎?
uj5u.com熱心網友回復:
您可能需要子聚合:
"aggs": {
"DoAvg": {
"terms": {
"field": "name"
},
"aggs": {
"average": {
"avg": {
"field": "DO"
}
}
}
}
}
如果您希望回傳 10 個以上的名稱,則應為術語聚合提供大小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/365798.html
標籤:弹性搜索
上一篇:回傳值或值的彈性搜索查詢
