在弹性搜索2.x中,字段名称是否可能在另一种类型的映射中具有不同的数据类型?

时间:2017-03-23 12:38:32

标签: elasticsearch

假设我在弹性搜索中有两种类型:用户,任务。

  1. 用户中的映射具有字段u_id,其类型为整数。
  2. 任务中的映射具有字段u_id,其类型为字符串。
  3. 创建索引时出现此错误:

    mapper_parsing_exception: Failed to parse mapping [tasks]: mapper [u_id] 
    cannot be changed from type [int] to [string]
    

    似乎弹性搜索不允许不同类型具有不同类型的相同字段名称。我对此是否正确。

    请帮忙。

    感谢。

1 个答案:

答案 0 :(得分:0)

在这种情况下,您有2个不同的索引,并且您肯定可以在其中使用不同的映射。

此错误告诉您无法在现有索引'任务中更改已创建的映射。更多here

  

更新现有映射

     

除了记录之外,现有的类型和字段映射不能   更新。更改映射意味着已经编入索引的无效   文档。相反,您应该使用正确的方法创建一个新索引   映射并将数据重新索引到该索引中。

有关映射更新here

的更多信息

在这种情况下,你可以:

  1. 简单方法 - 删除索引'输入'并使用新映射再次创建它。

  2. 更复杂的方法 - 使用_reindex API并将ypur数据重新索引到具有正确映射类型的新索引。