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

时间:2017-06-18 15:46:01

标签: elasticsearch elasticsearch-aggregation

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

例如,如果这些是文件:

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

聚合是“年龄”字段,脚本是: “return'doc ['firstName'] +''+ doc ['lastName']”

结果应该是:

桶1(年龄:15):

  • “Dana Miller”
  • “Michelle Bob”

Buchet 2(32岁):

  • Mary Smith
  • Anna Taylor

这在弹性搜索中是否可行?

修改

此外,我正在寻找一种方法来在桶中的多个命中运行脚本。 例如,如果我们使用上面的文档和年龄字段的聚合术语,我可以通过以下方式获得桶中命中的结果吗?

第1桶(15岁):

  • “Dana Miller和Michelle Bob”

Bucket2(32岁):

  • “玛丽史密斯和安娜泰勒”

ES可以吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

我猜以下查询可以帮助您。

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

希望这会有所帮助!!