合并动态字段与类型日期/字符串触发冲突

时间:2016-01-12 20:08:38

标签: json elasticsearch logstash

我在我的Elasticsearch服务器上上传了json文件,并且我有一个对象" meta"带有字段名称和字段值。有时值是一个字符串,有时是一个日期,因此动态映射不起作用。 我尝试使用显式映射将字段设置为字符串,但我总是有相同的错误"合并动态更新触发了冲突:不同类型的mapper [customer.meta.value],current_type [string] ,merged_type [date]"}}},:level =>:warn"

我可以使用参数" ignore_conflict"或者我如何上传多类型字段?

THX

2 个答案:

答案 0 :(得分:1)

elasticsearch中的同一字段不能有两种数据类型。无法对其进行索引。动态映射意味着从插入到字段中的第一个值标识类型。如果您尝试在该字段中插入其他类型,则会出错。如果您需要存储字符串和日期,最好的办法是将映射设置为使用字符串,并在将日期传递给elasticsearch之前将其显式转换为字符串。

答案 1 :(得分:0)

我为_ default_禁用了date_detection,这是有效的。 现在我的问题如下:我想仅为meta.value和customer.meta.value禁用date_detection。这对第一个是正确的,但我不能为第二个,因为它是我认为的嵌套对象。

我试过了:

curl -XPUT 'localhost:9200/rr_sa' -d '
{
   "mappings": {
       "meta": {
           "date_detection": false
         },
        "customer.meta": {
            "date_detection": false
         }
      }
   }
 '