关于 index_mapping 默认值的疑问

来源:4-6 -index_options参数说明

顾小北

2018-11-17

老师好,我想请问一下,在mapping一节中有提到null_value,是针对插入filed为空的时候设置默认值。

不知道es有没有对插入filed的值与预设fieldmapping不匹配的默认处理。

比如说我的一个field预设mapping是object,但我插入的数据可能是text,这时候插入就会报错,那有没有办法让其不报错而在这个报错的字段填充一个默认值,以保证这条数据正常入库呢?

'caused_by': {'type': 'illegal_state_exception', 'reason': "Can't get text on a START_OBJECT at 1:67280"}}}}

应用情景是我只能动态创建mapping,无法事先知道数据内部的字段,所以可能遇到这种情况,数据比较乱。

写回答

1回答

rockybean

2018-11-18

1.可以使用 ignore_malformed 配置忽略类型报错,这种情况是不索引类型冲突的字段,但可以在 source 里面查到原数据,如下所示:

https://www.elastic.co/guide/en/elasticsearch/reference/current/ignore-malformed.html

2.如果你要处理,必须前置,比如在 logstash 里面你可以检查字段是否有某个一定存在的 Object 的子字段,不存在,则自己去拼接成一个 object。总之这个处理是需要前置的,在写入 es 前要保证符合你的预期

0
1
顾小北
感谢!这个答案解决了我的疑惑,不过对于object貌似不能使用ignore_malformed,这应该是es的问题,谢谢
2018-11-25
共1条回复

Elastic Stack从入门到实践,动手搭建数据分析系统

有了Elastic Stack,不用写一行代码,你也可以玩转大数据分析!

1361 学习 · 397 问题

查看课程