Elasticsearch:如果类型发生变化,则忽略/不要索引字段

时间:2016-08-25 15:10:52

标签: elasticsearch

我的elasticsearch收到许多JSON日志。我无法控制架构。 是否可以动态索引新字段,但如果字段类型发生变化,以某种方式取消索引?

这背后的原因是,我没有JSON日志的架构。由于字段类型不匹配,我也不想丢失日志。最后,我希望能够使用一致的字段类型对这些字段进行查询!

非常感谢,

丹尼尔

1 个答案:

答案 0 :(得分:1)

如果某个字段不存在,则默认情况下会在映射中创建该字段。 ES将尽力做到"猜测"该字段的类型。但是,如果您尝试在事后索引与初始类型不匹配的ES,则会抱怨。例如,如果您索引了一个数字,并且ES猜到了它,那么它将创建一个type: long的索引。之后,如果您使用与long字段同名的字段对文档编制索引,但是将"bla bla"作为值,ES将会投诉并且不会索引您的文档。如果您想忽略此类错误,则需要ignore_malformed: true。相关文档为here

  

有时您无法控制所收到的数据。一个用户可以发送作为日期的登录字段,另一个用户发送作为电子邮件地址的登录字段。

     

尝试将错误的数据类型索引到字段中默认情况下会抛出异常,并拒绝整个文档。 ignore_malformed参数(如果设置为true)允许忽略该异常。格式错误的字段未编入索引,但文档中的其他字段将正常处理。