更新现有索引上的映射的属性

时间:2017-05-25 10:44:48

标签: elasticsearch

有这个映射:

curl -XPUT 'http://myip:9200/test?pretty' -d'
{
    "mappings": {
        "items": {
           "dynamic": "strict",
           "properties" : {
                "title" : { "type": "string" },
                "body" : { "type": "string" },
                "publish_up" : { "type": "date",
                                 "format" : "yyyy-MM-dd HH:mm:ss",
                                 "copy_to": "publication_date"},
                "publication_date" : { "type": "date",
                                       "format" : "yyyy-MM-dd HH:mm:ss"},

        }}}}'

我想将属性publication_date更改为"store" : "yes",以便返回值using fields。这是我的尝试:

curl -X PUT 'http://myip:9200/test/_mapping/items?ignore_conflicts=true' -d '{
  "items": {
    "properties": {
      "publication_date": {
        "type": "date",
        "format" : "yyyy-MM-dd HH:mm:ss",
        "store" : "yes"
}}}}'

但是我收到了错误

  

{ “错误”:{ “ROOT_CAUSE”:[{ “类型”: “illegal_argument_exception”, “理由”:“映射器   for [publication_date]与其他映射中的现有映射冲突   类型:\ n [mapper [publication_date]有不同的[商店]   值]“}],”类型“:”illegal_argument_exception“,”reason“:”Mapper for   [publication_date]与其他地图中的现有映射冲突   类型:\ n [mapper [publication_date]有不同的[商店]   值] “},” 状态“:400}

有任何帮助吗?提前谢谢。

PS:我正在使用ES 2.3

2 个答案:

答案 0 :(得分:1)

您无法更改弹性的映射。 Afaik你必须使用新映射重新索引数据。

答案 1 :(得分:1)

将文档写入ES(ES 2以上版本)后,无法更新映射。

由于更改映射意味着使已编制索引的文档无效,因此您需要使用正确的映射创建新索引,并将数据重新索引到该索引中。