elasticsearch Elasticsearch文档中字段总和的正确groovy脚本
这个问题是一个后续问题 如果我的文档看起来是这样的:
elasticsearch Elasticsearch文档中字段总和的正确groovy脚本,
elasticsearch,groovy,
elasticsearch,Groovy,这个问题是一个后续问题 如果我的文档看起来是这样的: {"documentid":1, "documentStats":[ {"foo_1_1":1}, {"foo_2_1":5}, {"boo_1_1":3} ] } 在脚本字段中,返回每个文档中与特定模式匹配的所有documentStats之和的正确groovy脚本是什么(例如,包含\u 1)我不知道ES,但在纯groovy中,您可以: document.documentStats.collectMany { Map entry ->
{"documentid":1,
"documentStats":[ {"foo_1_1":1}, {"foo_2_1":5}, {"boo_1_1":3} ]
}
在脚本字段中,返回每个文档中与特定模式匹配的所有documentStats之和的正确groovy脚本是什么(例如,包含
\u 1
)我不知道ES,但在纯groovy中,您可以:
document.documentStats.collectMany { Map entry ->
// assumes each entry has a single key and a single int value
def item = entry.entrySet()[0]
item.key.contains('_1_') ? [item.value] : []
}.sum()
希望这有帮助。我不知道ES,但在纯Groovy中,您可以:
document.documentStats.collectMany { Map entry ->
// assumes each entry has a single key and a single int value
def item = entry.entrySet()[0]
item.key.contains('_1_') ? [item.value] : []
}.sum()
希望这有帮助。与前面提到的问题类似,有一行代码对您的新结构也有同样的作用:
{
"query" : {
...
},
"script_fields" : {
"sum" : {
"script" : "_source.documentStats.findAll{ it.keySet()[0] =~'_1_' }.collect{it.values()}.flatten().sum()"
}
}
}
与前面提到的问题类似,有一行代码对您的新结构执行相同的操作:
{
"query" : {
...
},
"script_fields" : {
"sum" : {
"script" : "_source.documentStats.findAll{ it.keySet()[0] =~'_1_' }.collect{it.values()}.flatten().sum()"
}
}
}