3

我正在用 property 索引一个文档obj_properties,它是 property name -> property value 的哈希。elasticsearch 推断某些属性值是日期,当遇到无法解析为日期的同一属性的后续值时,会导致以下错误。

org.elasticsearch.index.mapper.MapperParsingException: failed to parse date field <NON-DATE FIELD within obj_properties>

所以,我想禁用日期检测obj_properties以及其中嵌套的任何内容。每

http://elasticsearch-users.115913.n3.nabble.com/Date-Detection-not-always-wanted-tp1638890p1639415.html

(注意,我相信链接的帖子包含一个错字——该字段应该是date_formats而不是date_format,但我已经尝试了两种方法)

我创建了以下映射

mapping do
    indexes :name
    indexes :obj_properties, type: "object", date_formats: "none"
  end

但我继续收到同样的例外。中的属性obj_properties无法提前知道,因此无法创建详尽的类型映射。有任何想法吗?禁用日期检测是正确的方法吗?

4

2 回答 2

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
      }
   }
}
'
于 2013-02-12T11:28:52.050 回答
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提到的

虽然我相信这适用于整个索引 - 而不是特定领域

于 2013-03-26T14:18:13.180 回答