更改索引类型映射

时间:2017-08-25 11:30:49

标签: elasticsearch elasticsearch-mapping

我有类型'T1'的索引映射,如下所示:

"T1" : {
    "properties" : {
        "prop1" : {
            "type" : "text"
        }
    }
}

现在我想将prop1的类型从text更改为keyword。我不想删除索引。我还读过有人建议用新类型创建另一个属性并替换它。但后来我必须更新我不感兴趣的旧文件。我尝试使用如下的PUT api,但我从不工作。

PUT /indexName/T1/_mapping -d
{
    "T1" : {
        "properties" : {
            "prop1" : {
                "type" : "keyword"
            }
        }
    }
}

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:2)

映射无法修改,因此您使用的PUT api将无效。必须使用要使用的更新映射创建新索引,并将所有数据重新索引到新索引。 为了防止停机,您始终可以使用别名: https://www.elastic.co/blog/changing-mapping-with-zero-downtime

答案 1 :(得分:1)

映射一旦持久化,就无法更新。唯一的选择是使用正确的映射创建一个新索引,并使用ES提供的reindex API重新索引数据。

您可以在此处阅读reindex API: https://www.elastic.co/guide/en/elasticsearch/reference/5.5/docs-reindex.html

相关问题