我想通过映射ES doc中的某个字段来进行自定义聚合。
我尝试利用术语聚合脚本。有数百个映射,因此我必须将它们全部放入 HashMap:
GET /myindex/_search
{
"query": {
"match_all": {}
},
"aggs": {
"myagg": {
"terms": {
"script": {
"source": "Map m = new HashMap(); m.put('a', 'A'); m.put('b', 'A'); m.put('bb', 'CC'); ... return m.get(doc['foo.keyword'].value)",
"lang": "painless"
}
}
}
},
"size": 0
}
即使我使用存储的脚本,它也很难看,性能也很差。不知道为什么在我的脚本中执行要花费这么多时间。
我还尝试了脚本化指标聚合。与普通术语聚合相比,它更好但仍然很慢。
有什么方法可以加速映射?(运行时字段除外,因为我的 ES 版本不支持)