请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于 index_mapping 默认值的疑问

老师好,我想请问一下,在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回答

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 16:30:37
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信