在Elasticsearch中投影与正则表达式匹配的文档中所有字段的总和
在Elasticsearch中,我知道我可以使用来指定要从与查询匹配的文档中返回的字段{"fields":["fieldA", "fieldB",
..]}。
但是,如何返回与特定正则表达式匹配的所有字段的总和(作为新字段)?
例如,如果我的文档如下所示:
{"documentid":1, "documentStats":{
"foo_1_1":1,
"foo_2_1":5,
"boo_1_1:3
}
}
我想要_1_
每个文档匹配的所有统计信息的总和?
回答:
您可以定义一个script_field
包含小Groovy脚本的人工字段,它将为您完成工作。
因此,查询之后,您可以添加以下script_fields
部分:
{ "query" : {
...
},
"script_fields" : {
"sum" : {
"script" : "_source.documentStats.findAll{ it.key =~ '_1_'}.collect{it.value}.sum()"
}
}
}
脚本所做的只是检索documentStats
名称匹配的所有字段_1_
并对其所有值求和,在这种情况下,您将得到4。
在尝试进行此操作之前,请确保启用动态脚本输入elasticsearch.yml
并重新启动ES节点。
以上是 在Elasticsearch中投影与正则表达式匹配的文档中所有字段的总和 的全部内容, 来源链接: utcz.com/qa/399084.html