首页 文章

为什么Elasticsearch在从1.x到2.x的迁移中存在冲突的字段映射?

提问于
浏览
0

我想将我的弹性从1.5.2升级到2.1.1,当我使用migration plugin找到要解决的问题时,在迁移本身之前,我在"Conflicting field mappings"上遇到错误 .

在关于这个问题的documentation中,它说:

具有相同名称,在同一索引中的不同类型的字段必须具有相同的映射,但copy_to,dynamic,enabled,ignore_above,include_in_all和properties参数除外,每个字段可能具有不同的设置 . [...] Elasticsearch不会在存在冲突的字段映射时启动 . 必须使用新映射删除或重新索引这些索引 .

我无法理解它是这样的原因......我的意思是“具有相同名称的字段,在同一索引中,在不同类型中,必须具有相同的映射”?

1 回答

  • 2

    问题是类型存储在相同的Lucene索引中 . Lucene不适用于类型的上下文 . 因此,在两种不同类型中使用时,字段的名称与存储在Lucene中的字段名称相同 . 由于Lucene使用相同的名称,因此必须使用相同的类型 .

    因此,以下两个字段将添加到Lucene的同一个字段中:

    index    -   type   -   field
    myindex  -   type_a - fieldOne
    myindex  -   type_b - fieldOne
    

    在lucene索引中都被称为:fieldOne

相关问题