在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

elasticsearch 能否通过script来对多个field进行aggregation

Elasticsearch | 作者 Goldbach | 发布于2016年06月13日 | 阅读数:8324

需求:多个field都是一个意义,例如resp.error、resp.xxx.error、resp.yyy.error,需要对这些field做terms的aggregation。

我感觉script应该支持,但是我试script为python的一直出错。

请问一下这种方式能否行的通,如果不通,是否还有其他方法。
我现在有一种其他方法:将这多个field做同样的agg,并列的,然后再合并。
已邀请:

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次了,目前还好。

要回复问题请先登录注册