我在弹性查询中添加了一个名为“age”的脚本文件,其定义如下:
"script_fields" : {
"age" : {
"script" : "DateTime.now().year - doc['date_of_birth'].date.year"
}
}
现在,我还为每个人提供了其他领域,称为“myscore”。 我正试图在myscore上进行聚合,并创建一个年龄的子聚合。 我希望看到的结果是:
key: 25
buckets: [
67,
70,
74
]
key: 62
buckets: [
45
]
我添加了这个聚合:
{
"myagg": {
"terms": {
"field": "myscore",
"size": 1000,
"order": {
"_count": "desc"
}
},
"aggregations": {
"inner": {
"terms": {
"field": "age",
"size": 1000
}
}
}
}
}
但是年龄的内部桶返回空(在命中本身我可以看到年龄段)...
任何想法?
答案 0 :(得分:2)
您需要在聚合中使用脚本:
"aggs" : {
"myagg": {
"terms": {
"field": "myscore",
"order": {
"_count": "desc"
}
},
"aggregations": {
"group by age": {
"terms": {
"script": "DateTime.now().year - doc['dateCreated'].date.year"
}
}
}
}
}
希望这会对你有帮助..