我创建了groovy脚本来计算新的字段值.然后我可以在查询中使用该脚本来使用script_fields参数计算新字段值.这是一个例子:
{
"query": {
"filtered": {
"query": {
"bool": {
"must": {"match_all": {}}
}
}
}
},
"script_fields":{
"my_field":{
"script_id":"my_field_calculator",
"lang" : "groovy",
"params": {}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,我看到每个都有一个fields包含my_field在其中的对象的结果.完善.
现在我想使用术语聚合来获取这个新字段值的每次出现的计数,如下所示:
{
"query": {
"filtered": {
"query": {
"bool": {
"must": {"match_all": {}}
}
}
}
},
"script_fields":{
"my_field":{
"script_id":"my_field_calculator",
"lang" : "groovy",
"params": {}
}
}
"aggs": {
"counts_by_my_field": {
"terms": {
"field": "my_field"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
查询运行得很好,我仍然在每个字段中看到我的计算结果,但是aggregations对象包含一个键,里面counts_by_my_field有一个空buckets数组.
我错过了什么?是否可以在聚合中使用script_fields?
虽然我无法使聚合使用script_field聚合的值,但我发现了另一种方法来完成我希望做的事情。事实证明,聚合将接受一个script_id可以在聚合期间计算脚本字段值的配置。
这是我使用作为script_id聚合一部分的示例:
{
"query": {
"filtered": {
"query": {
"bool": {
"must": { "match_all": {}}
}
}
}
},
"aggs": {
"counts_by_my_field": {
"terms": {
"script_id": "my_field_calculator",
"lang" : "groovy",
"params": {}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6758 次 |
| 最近记录: |