elasticsearch,logstash,Json,elasticsearch,Logstash" /> elasticsearch,logstash,Json,elasticsearch,Logstash" />

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

Json 将动态字段与触发冲突的日期/字符串类型合并,json,elasticsearch,logstash,Json,elasticsearch,Logstash,我正在我的Elasticsearch服务器上上传json文件,我有一个带有字段名和字段值的对象“meta”。有时值是字符串,有时是日期,因此动态映射不起作用。 我尝试放置显式映射以将字段设置为字符串,但我总是遇到相同的错误“合并动态更新会触发冲突:不同类型的映射器[customer.meta.value],当前类型[string],合并类型[date]}},:level=>:warn” 我可以使用参数“忽略\u冲突”或如何上载多类型字段 Thx在elasticsearch中,同一字段不能有两种数

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

我可以使用参数“忽略\u冲突”或如何上载多类型字段


Thx

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

我禁用了“默认”的日期检测功能,这是有效的。 现在我的问题是:我只想对meta.value和customer.meta.value禁用日期检测。第一个是正确的,但第二个是错误的,因为我认为它是一个嵌套对象

我试过这个:

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

似乎
ignore\u conflict
只会掩盖这个问题。将来当你尝试进行搜索时,它可能仍然会伤害你。如果你同意它一直是一个字符串,我会继续让它工作。你的映射看起来像什么?你的显式映射不会更改现有索引。你删除了旧的索引吗?是的,我删除了我认为最好的解决方案是动态映射,但我不知道如果我有两种数据类型