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):
- "Dana Miller"
- "Michelle Bob"
第 2 位(32 岁):
- 玛丽·史密斯
- 安娜·泰勒
这在 elasticsearch 中可行吗?
编辑:
此外,我正在寻找一种方法来 运行 脚本超过存储桶中的多个命中。
比如我们用上面的文档和age字段的terms聚合,是否可以通过下面的方式把bucket中的hits的结果一起得到?
桶 1(15 岁):
- "Dana Miller and Michelle Bob"
Bucket2(32 岁):
- "Mary Smith and Anna Taylor"
在 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 "
}
}
}
}
}
}
}
}
希望对您有所帮助!!
我想执行术语聚合,并在执行脚本操作后在每个结果桶中获取命中字段。
例如,如果这些文件是:
{"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):
- "Dana Miller"
- "Michelle Bob"
第 2 位(32 岁):
- 玛丽·史密斯
- 安娜·泰勒
这在 elasticsearch 中可行吗?
编辑:
此外,我正在寻找一种方法来 运行 脚本超过存储桶中的多个命中。 比如我们用上面的文档和age字段的terms聚合,是否可以通过下面的方式把bucket中的hits的结果一起得到?
桶 1(15 岁):
- "Dana Miller and Michelle Bob"
Bucket2(32 岁):
- "Mary Smith and Anna Taylor"
在 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 "
}
}
}
}
}
}
}
}
希望对您有所帮助!!