考虑一个示例聚合,我正在通过使用脚本度量标准为每个存储桶获取单个值:
...
"aggs": {
"students": {
"terms": {
"field": "studentId"
},
"aggs": {
"student_name": {
"scripted_metric": {
"map_script" : "_agg['value'] = doc['studentName'].value",
"combine_script" : "return _agg['value']",
"reduce_script" : "return _aggs[0]"
}
},
...
通过这样做,我得到这样的结果:
...
"students": {
...
"buckets": [
{
"key": "Student302",
"doc_count": 39,
"student_name": {
"value": "Mr. Student"
},
...
在这种情况下,我知道studentName
对studentId
所有归档的所有文档都是相同的。所以我知道只需要一个结果。
理想情况下,我希望结果符合示例中显示的格式。我知道tophits聚合器,当我将命中设置为1时,它会做我想要的,但它需要额外的后处理才能使输出格式相同。
我正在寻找一种更有效或更理想的方式来获取相同格式的结果,其中“field_name”中只有一个“值”。
或者:有没有理由不像上面那样使用scripted_metric?
请注意,我需要针对多个字段执行此操作,并且我对使用脚本化指标的担忧与性能和维护有关。
请告知是否有更好的方法。
谢谢!