假设我有索引,其映射看起来像这样:
curl -XPUT 'http://localhost:9200/oldindex/_mapping/book' -d '
{
"book" : {
"properties" : {
"title" : {"type" : "text"},
"words" : {"type" : "text"},
"pages": {"type": "int"}
}
}
}'
我想从旧索引创建一个新索引,但现在我想要"单词"键入字段为"关键字"而不是"文字":
curl -XPUT 'http://localhost:9200/oldindex/_mapping/book' -d '
{
"book" : {
"properties" : {
"title" : {"type" : "text"},
"words" : {"type" : "keyword"},
"pages": {"type": "int"}
}
}
}'
我该怎么做?我可以使用" Reindex API"还是有更好的解决方案?
答案 0 :(得分:1)
假设您不希望在索引上使用其他字段wordsKeyword
,则Reindex API可能是最佳的。将数据移动到临时索引,核对索引并重新创建它(使用更新的映射),然后将临时索引数据重新索引回新索引。
这是一步一步:
如果您不介意使用其他字段并且不想重新编制索引,则可以考虑使用_update_by_query API将值通过字面复制到新映射的keyword
字段中脚本,从而弃用text
。