Elasticsearch在索引模板中使用两个映射引发错误

时间:2019-03-22 17:31:11

标签: elasticsearch elasticsearch-5

如果我按如下方式定义索引模板文件 template.json

{
    "template": "types",
    "mappings": {
        "type1": {
            "properties": {
                "title": {
                    "type": "text"
                }
            }
        },
        "type2": {
            "properties": {
                "title": {
                    "type": "keyword"
                }
            }
        }
    }
}

并尝试发布:

curl -XPUT http://localhost:9200/_template/types -d@template.json

我收到以下答复:

{
  "error" : {
    "root_cause" : [
      {
        "type" : "illegal_argument_exception",
        "reason" : "mapper [title] cannot be changed from type [keyword] to [text]"
      }
    ],
    "type" : "illegal_argument_exception",
    "reason" : "mapper [title] cannot be changed from type [keyword] to [text]"
  },
  "status" : 400
}

我希望能够在模板中定义多个具有不同类型的字段的映射。

我在做什么或假设不正确?

我正在使用Elasticsearch 5.6。

1 个答案:

答案 0 :(得分:3)

如果这些字段具有相同的名称,则即使您使用的是5.6版(这也是允许在同一索引中使用多种映射类型的最后一个版本),它们也必须具有相同的字段类型。

如果类型title中的字段type1映射为text,则类型title中的字段type2也需要映射为text