在Tire的elasticsearch映射中禁用日期检测

时间:2013-02-11 13:51:22

标签: elasticsearch tire

我正在使用属性obj_properties索引文档,该属性是属性名称的哈希值 - >适当的价值。 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中的属性未提前知道,因此无法创建类型的详尽映射。有任何想法吗?禁用日期检测是否正确?

2 个答案:

答案 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

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