首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在弹性搜索中将索引的字段类型更改为新索引

在弹性搜索中将索引的字段类型更改为新索引
EN

Stack Overflow用户
提问于 2018-01-16 22:38:01
回答 1查看 1.8K关注 0票数 0

假设我有索引,它的映射如下所示:

代码语言:javascript
运行
复制
curl -XPUT 'http://localhost:9200/oldindex/_mapping/book' -d '
   {
    "book" : {
        "properties" : {
            "title" : {"type" : "text"},
            "words" : {"type" : "text"},
            "pages": {"type": "int"}
        }
     }
   }'

我想从旧索引中创建一个新索引,但现在我希望“word”type字段是“关键字”,而不是"text":

代码语言:javascript
运行
复制
curl -XPUT 'http://localhost:9200/oldindex/_mapping/book' -d '
       {
        "book" : {
            "properties" : {
                "title" : {"type" : "text"},
                "words" : {"type" : "keyword"},
                "pages": {"type": "int"}
            }
         }
       }'

我怎么能这么做?我是否可以使用"Reindex API“,或者有更好的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-16 23:01:01

假设您不需要索引上的另一个字段(如wordsKeyword ),那么重新索引API可能是最好的。将数据移动到临时索引,对索引进行核化并重新创建它(通过更新的映射),然后将临时索引数据重新索引到新索引中。

一步一步地说,这是:

  1. 创建具有新映射的新索引。
  2. 通过再索引将数据从旧索引复制到新索引。
  3. 删除旧索引。
  4. 使用新映射重新创建旧索引。
  5. 通过_reindex将数据从新索引复制到旧索引。
  6. 删除新索引。-“旧索引”(从技术上讲是同名的新索引)现在将有更新的地图和数据。总共有五个API调用(两个_reindexes将数据移动到新的映射,然后将其移回)

如果您不介意使用另一个字段,并且不想重新索引,则可以使用查询 API通过脚本将值逐字逐句地复制到新映射的keyword字段中,从而减少对text字段的推荐。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48290970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档