7.elasticsearch重建索引

什么时候需要重建索引

  • 索引的mappings发生变更
  • 索引的setting发生变更
  • 集群内,集群间,需要做数据迁移

update by query

在现有索引重建

比如需要给一个text新增一个子字段,用english分词器。那么新添加的数据会被索引,之前的数据不会被索引。此时可以用_update_by_query

POST blogs/_update_by_query { }

reindex

新建一个索引,然后使用reindex导入原有索引数据

POST _reindex { "source": { "index": "blogs" }, "dest": { "index": "blogs_fix", "version_type": "internal" } }

URI上添加wait_for_completion=false实现异步操作

POST _reindex?wait_for_completion=false { "source": { "index": "blogs" }, "dest": { "index": "blogs_fix", "version_type": "internal" } } #查看进度 GET _tasks?detailed=true&actions=*reindex

什么是alias

alias是别名对意思,对一个索引建立别名

  • 可以帮助运维实现零停机情况下重建索引
  • 可以过滤一些索引的数据
  • 可以指向多个索引(只能查,不能修改新增等操作)
PUT /my_index_name/_alias/alias_name POST /_aliases { "actions": [ { "add": { "index": "my_index__name_v2", "alias": "alias_name" }} ] }

如何实现零停机呢更换索引呢

  • 首先保证要重建的索引是有别名的,并且其他业务方是使用这个alias来获取数据的
  • 新建一个索引,将老索引的数据添加到新增的索引上
POST _reindex { "source": { "index": "old_index" }, "dest": { "index": "new_index" } }
  • 把老索引的别名删除,再给新增的索引添加老索引的别名
POST /_aliases { "actions": [ { "remove": { "index": "my_index_name_v1", "alias": "alias_name" }}, { "add": { "index": "my_index__name_v2", "alias": "alias_name" }} ] }

__EOF__

本文作者赛博朋克V
本文链接https://www.cnblogs.com/pengliblogs/p/17946820.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   赛博朋克V  阅读(62)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示