打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
重建索引
一个field的设置是不能被修改的,如果要修改一个rield,那么应该按照新的mapping,建立一个index,然后将数据批量查询出,重新用bulk api写入index中。

批量查询的时候,建议采用scroll api ,并且多线程并发的方式来index数据,每次scoll就查询指定日期的一段数据,交给一个线程即可。

具体步骤:
(1)一开始,依靠dyrmmic mapping插入数据,但是有些数据是2018-09-04 这种日期格式的
所以title这种的filed被映射为了date类型,实际上它应该是string类型

(2)当后期向索引中加入string类型的title值的时候,就会报错
(3)此时想查出title的类型,是不可能的
(4)进行index,也就是重新建立索引,将旧的索引的数据查询出来,再导入新的索引
(5)修改使用的index为new_index,才重新启动java应用?
这个过程中,会导致java应用停机,可用性降低
(6)给java应用一个别名,指向旧索引的,java应用先用着goods_index alias操作此时实际指向的是旧的my_index
样例:
PUT /my_index/_alias/goods_index
(7)新建一个index,调整其title的类型为string
(8)使用scroll api 将数据批量查询出来
(9)采用bluk api将scoll查出来的一批数据,批量导入新索引
(10)反复循环8-9,查询一批有一批的数据出来,采用bulk api将每一批数据批量写入新索引
(11)将goods_index alias切换到my_index_new上去,java应用会直接通过index别名使用
新的索引中的数据,java应用程序不需要停机,零提交,高可用
(12)直接通过goods_index别名来查询,是否ok
GET /goods_index/my_type/_search
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Elasticsearch 的坑爹事
用java实现全文检索
用PHP调用Lucene包来实现Lucene
【Java】基础15:字符串与static
Elasticsearch 8.10 同义词管理新篇章:引入同义词 API
13 款开源的全文检索引擎
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服