Elasticsearch 聚合最常见的整数列表
Elasticsearch Aggregation most common list of integers
我正在寻找弹性搜索聚合+映射
这将 return 最常见的 list 用于特定字段。
例如对于文档:
{"ToneCurvePV2012": [1,2,3]}
{"ToneCurvePV2012": [1,5,6]}
{"ToneCurvePV2012": [1,7,8]}
{"ToneCurvePV2012": [1,2,3]}
我希望聚合结果:
[1,2,3](因为它出现了两次)。
到目前为止,我所做的任何聚合都会 return: 1
默认术语聚合无法做到这一点。您需要将术语聚合与脚本一起使用。请注意,这可能会影响您的集群性能。
在这里,我使用了将从数组创建字符串并将其用于聚合的脚本。因此,如果您有像 [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: 键在聚合响应中将作为字符串而不是数组出现。
我正在寻找弹性搜索聚合+映射
这将 return 最常见的 list 用于特定字段。
例如对于文档:
{"ToneCurvePV2012": [1,2,3]}
{"ToneCurvePV2012": [1,5,6]}
{"ToneCurvePV2012": [1,7,8]}
{"ToneCurvePV2012": [1,2,3]}
我希望聚合结果: [1,2,3](因为它出现了两次)。
到目前为止,我所做的任何聚合都会 return: 1
默认术语聚合无法做到这一点。您需要将术语聚合与脚本一起使用。请注意,这可能会影响您的集群性能。
在这里,我使用了将从数组创建字符串并将其用于聚合的脚本。因此,如果您有像 [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: 键在聚合响应中将作为字符串而不是数组出现。