ElasticSearch:多字段“升级”产生错误:

时间:2013-09-27 14:43:21

标签: mapping elasticsearch upgrade

好的,这是任务:

我已经阅读了整个文档,我注意到我可以升级"一个数据类型,如字符串到多字段 - 在测试场景中它已经有效。

我的文件结构目前是:

{
    "name": "test",
    "words": [
        {
            "words": "hello world",
            "verts": [
                1,
                2,
                3
            ]
        }
    ]
}

这些文档是使用默认映射创建的 - 因此没有明确设置映射。

我发出的XDELETE命令包含如下数据:

{
    "article": {
        "properties": {
            "words": {
                "type": "multi_field",
                "fields": {
                    "words": {
                        "type": "string",
                        "index": "analyzed"
                    },
                    "untouched": {
                        "type": "string",
                        "index": "not_analyzed"
                    }
                }
            }
        }
    }
}

但我在这里收到此错误:

  

{"错误":" MergeMappingException [合并因失败而失败{[Can&#t; t   合并非multi_field /非简单映射[words]与a   multi_field mapping [words]]}]"," status":400}

有人可以向我解释,为什么会这样?当我将这个映射发布到一个干净的索引时,它可以工作,并且正在应用not_analyzed过滤器。

谢谢:)

1 个答案:

答案 0 :(得分:1)

由于文档中的“words”字段具有自己的属性(“words”和“verts”),因此无法将其“升级”为multi_field。但是,如果您有像

这样的映射
{
"article": {
    "properties": {
        "words": {
            "properties": {
                "words": {
                    "type": "multi_field",
                    "fields": {
                        "words": {
                            "type": "string",
                            "index": "analyzed"
                        },
                        "untouched": {
                            "type": "string",
                            "index": "not_analyzed"
                        }
                    }
                }
            }
        }
    }
}
}

然后一切都应该成功。