当我尝试索引文档时,我得到以下异常.
Caused by: org.elasticsearch.index.mapper.MapperParsingException: failed to parse date field [J], tried both date format [dateOptionalTime], and timestamp number with locale []
这一切都是正确的,但有可能忽略异常并索引其余的字段吗?
我认为这可以在不重新索引的情况下通过将"ignore_malformed"标志添加到字段的映射来完成.这是我尝试过的,它有效:
POST events { "mappings" : { "dates" : { "properties" : { "lenient_date" : { "type" : "date" } } } } }
PUT events/dates/1 { "lenient_date" : "1/32/2014" }
结果:解析错误(如预期的那样)
{ "error": "MapperParsingException[failed to parse [lenient_date]]; nested: MapperParsingException[failed to parse date field [1/32/2014], tried both date format [dateOptionalTime], and timestamp number with locale []]; nested: IllegalArgumentException[Invalid format: \"1/32/2014\" is malformed at \"/32/2014\"]; ", "status": 400 }
获取事件/日期/ 1结果:找不到日期(按预期)
{ "_index": "events", "_type": "dates", "_id": "1", "found": false }
PUT events/dates/_mapping { "dates" : { "properties" : { "lenient_date" : { "type" : "date", "ignore_malformed" : true } } } }
PUT events/dates/1 { "lenient_date" : "1/32/2014" } GET events/dates/1 Result: now works { "_index": "events", "_type": "dates", "_id": "1", "_version": 1, "found": true, "_source": { "lenient_date": "1/32/2014" } }
我正在运行ES版本1.3.2.我还没有检查更新的映射如何影响排序和过滤.