elasticsearch:运行 顶部命中聚合字段的脚本

elasticsearch: running a script over top hits aggregation fields

我想执行术语聚合,并在执行脚本操作后在每个结果桶中获取命中字段。

例如,如果这些文件是:

{"age": 15, "firstName": "Dana", "lastName": "Miller"}
{"age": 15, "firstName": "Michelle", "lastName": "Bob"}
{"age": 32, "firstName": "Mary", "lastName": "Smith"}
{"age": 32, "firstName": "Anna", "lastName": "Taylor"}

通过"age"字段聚合,脚本为: "return 'doc['firstName'] + ' ' + doc['lastName']"

结果应该是:

桶 1(年龄:15):

第 2 位(32 岁):

这在 elasticsearch 中可行吗?

编辑:

此外,我正在寻找一种方法来 运行 脚本超过存储桶中的多个命中。 比如我们用上面的文档和age字段的terms聚合,是否可以通过下面的方式把bucket中的hits的结果一起得到?

桶 1(15 岁):

Bucket2(32 岁):

在 ES 中可以吗?

谢谢。

我想下面的查询可以帮到你。

{
"size": 0,
"aggs": {
  "group By age": {
     "terms": {
        "field": "age"
     },
     "aggs": {
        "top hits": {
           "top_hits": {
              "script_fields": {
                 "Name": {
                    "script": "doc['firstName'].value + ' ' + doc['lastName'].value "
                  }
                 }
              }
           }
        }
      }
   }
  }

希望对您有所帮助!!