elasticsearch 能否通过script来对多个field进行aggregation
Elasticsearch | 作者 Goldbach | 发布于2016年06月13日 | 阅读数:8331
需求:多个field都是一个意义,例如resp.error、resp.xxx.error、resp.yyy.error,需要对这些field做terms的aggregation。
我感觉script应该支持,但是我试script为python的一直出错。
请问一下这种方式能否行的通,如果不通,是否还有其他方法。
我现在有一种其他方法:将这多个field做同样的agg,并列的,然后再合并。
我感觉script应该支持,但是我试script为python的一直出错。
请问一下这种方式能否行的通,如果不通,是否还有其他方法。
我现在有一种其他方法:将这多个field做同样的agg,并列的,然后再合并。
2 个回复
stab - freshman
赞同来自: Goldbach
[Multi-field terms aggregationedit]
里面提供了两种方案,要你是提前知道有那些field最后是要合并到一起agg的,第二种可能更适合你一些,性能的测试我没做过,但功能上我简单的试了一下,是可行的
Goldbach - 90IT
赞同来自:
我用了第一种,这是我的script:
if (_source.response.xxx) { _source.response.xxx.error} else if (_source.response.yyy) {_source.response.yyy.error} else if (_source.response.error) {_souzrce.response.error.split(':')[0]}
发现性能很差,还不如请求多次,每次只对一个field做agg。
第二种我没用是因为有很多历史数据,要重新设置mapping,需要重新生成index。所以也不用了。
我field不多,就4个,那就请求4次了,目前还好。