0

好了,任务来了:

我已经阅读了整个文档,并且注意到我可以将像字符串这样的数据类型“升级”为多字段——在测试场景中它已经工作了。

我的文档结构目前是:

{
    "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"
                    }
                }
            }
        }
    }
}

但我在这里收到此错误:

{"error":"MergeMappingException[Merge failed with failures {[Can't merge a non multi_field / non simple mapping [words] with a multi_field mapping [words]]}]","status":400}

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

谢谢 :)

4

1 回答 1

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"
                        }
                    }
                }
            }
        }
    }
}
}

那么一切都会好起来的。

于 2013-09-28T04:50:44.080 回答