博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
elasticsearch重建索引
阅读量:7239 次
发布时间:2019-06-29

本文共 1147 字,大约阅读时间需要 3 分钟。

1、重建索引

 

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

 

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

 

1.1如果说旧索引的名字,是old_index,新索引的名字是new_index,终端java应用,已经在使用old_index在操作了,难道还要去停止java应用,修改使用的indexnew_index,才重新启动java应用吗?这个过程中,就会导致java应用停机,可用性降低

 

java应用一个别名,这个别名是指向旧索引的,java应用先用着,java应用先用goods_index alias来操作,此时实际指向的是旧的my_index

 

PUT /my_index/_alias/goods_index

 

1.2新建一个index,调整其字段的类型

 

1.3使用scroll api将数据批量查询出来

 

GET /my_index/_search?scroll=1m

{

    "query": {

        "match_all": {}

    },

    "sort": ["_doc"],

    "size":  1

}

 

1.4采用bulk apiscoll查出来的一批数据,批量写入新索引

 

POST /_bulk

{ "index":  { "_index": "my_index_new", "_type": "my_type", "_id": "2" }}

{ "title":    "2017-01-02" }

 

反复循环,查询一批又一批的数据出来,采取bulk api将每一批数据批量写入新索引

 

1.5goods_index alias切换到my_index_new上去,java应用会直接通过index别名使用新的索引中的数据,java应用程序不需要停机,零提交,高可用

 

POST /_aliases

{

    "actions": [

        { "remove": { "index": "my_index", "alias": "goods_index" }},

        { "add":    { "index": "my_index_new", "alias": "goods_index" }}

    ]

}

 

12)直接通过goods_index别名来查询,是否ok

 

GET /goods_index/my_type/_search

 

2、基于aliasclient透明切换index

转载于:https://www.cnblogs.com/kesimin/p/9559975.html

你可能感兴趣的文章
OpenNMS安装与试用
查看>>
安装Win2012 - 体验Windows 2012 Server 的虚拟化技术【1】
查看>>
QListWiget等样式表
查看>>
计算100以内所有奇数的和以及所有偶数的和
查看>>
搭建本地私有Kolla docker registry
查看>>
Docker 定制ssh、java等基础服务镜像
查看>>
jvm参数设置和分析
查看>>
伟大的程序员是怎样炼成的?
查看>>
vCenter Operations for View快速上手指南
查看>>
tomcat搭建
查看>>
$_SERVER获取URL地址函数的区别
查看>>
LABEL MATRIX里用计数器自动生成流水号和自定义条码格式
查看>>
java 实现一套流程管理、流转的思路(伪工作流)
查看>>
动态修改小程序标题栏文字
查看>>
【转】家庭wifi覆盖指导
查看>>
mac IDE输入光标变成块状 改为竖线
查看>>
linux 协议栈tcp的rst报文中,seq的选取问题
查看>>
一个铜钱的故事
查看>>
项目视频
查看>>
Android -- 使用ViewPager实现画廊效果
查看>>