我正在尋找彈性搜索聚合 映射,它將回傳某個欄位的最常見串列。例如對于檔案:
{"ToneCurvePV2012": [1,2,3]}
{"ToneCurvePV2012": [1,5,6]}
{"ToneCurvePV2012": [1,7,8]}
{"ToneCurvePV2012": [1,2,3]}
我希望聚合結果: [1,2,3](因為它出現兩次)。
到目前為止,我所做的任何聚合都會回傳:1
uj5u.com熱心網友回復:
這對于默認術語聚合是不可能的。您需要將術語聚合與腳本一起使用。請注意,這可能會影響您的集群性能。
在這里,我使用了從陣列創建字串并將其用于聚合的腳本。所以如果你有這樣的陣列值,[1,2,3]那么它將創建它的字串表示形式,'[1,2,3]'并且該鍵將用于聚合。
以下是可用于按預期生成聚合的示例查詢:
POST index1/_search
{
"size": 0,
"aggs": {
"tone_s": {
"terms": {
"script": {
"source": "def value='['; for(int i=0;i<doc['ToneCurvePV2012'].length;i ){value= value doc['ToneCurvePV2012'][i] ',';} value = ']'; value = value.replace(',]', ']'); return value;"
}
}
}
}
}
輸出:
{
"hits" : {
"total" : {
"value" : 4,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"tone_s" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "[1,2,3]",
"doc_count" : 2
},
{
"key" : "[1,5,6]",
"doc_count" : 1
},
{
"key" : "[1,7,8]",
"doc_count" : 1
}
]
}
}
}
PS:鍵將作為字串而不是聚合回應中的陣列出現。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444309.html
