我正在使用属性obj_properties
索引文档,该属性是属性名称的哈希值 - >适当的价值。 elasticsearch推断某些属性值是日期,当遇到无法解析为日期的同一属性的后续值时,会导致以下错误。
org.elasticsearch.index.mapper.MapperParsingException: failed to parse date field <NON-DATE FIELD within obj_properties>
所以,我想禁用obj_properties
的日期检测以及嵌套在其中的任何内容。每
(注意,我认为相关帖子包含拼写错误 - 字段应为date_formats
而不是date_format
,但我已尝试过两种方式)
我创建了以下映射
mapping do
indexes :name
indexes :obj_properties, type: "object", date_formats: "none"
end
但我继续收到同样的例外。 obj_properties
中的属性未提前知道,因此无法创建类型的详尽映射。有任何想法吗?禁用日期检测是否正确?
答案 0 :(得分:2)
您可以通过在映射中指定特定type
来关闭日期检测:
curl -XPUT 'http://127.0.0.1:9200/myindex/?pretty=1' -d '
{
"mappings" : {
"mytype" : {
"date_detection" : 0
}
}
}
'
或通过在默认映射中指定索引中的所有类型:
curl -XPUT 'http://127.0.0.1:9200/myindex/?pretty=1' -d '
{
"mappings" : {
"_default_" : {
"date_detection" : 0
}
}
}
'
答案 1 :(得分:1)
mapping(date_detection: false) do
indexes :name
indexes :obj_properties, type: "object"
end
然后curl 'http://127.0.0.1:9200/myindex/_mapping?pretty=1'
将包含date_detection = false
提到的here
虽然我认为这适用于整个索引 - 而不是特定领域