ES索引重建--使用python elasticsearch

ES索引重建–使用python elasticsearch

在ES集群的使用过程中,有时会遇到需要重新建立mapping的情况,通常,我们会选择建立一个新的索引,然后将数据从原索引迁移到新索引的方式来重建需要的mapping。

之前也有看到过通过Elasticsearch 的Java API 调用scan&scroll 和bulk 的方法,无奈Java 太久没有上手了~~
所以,找了一下,发现有Python的elasticsearch包针对这种Reindex作业提供了方法,相对Java 方法而言,Python 更为简单,仅需数行代码即可。
Python elasticsearch的详细文档链接:http://elasticsearch-py.readthedocs.io/en/latest/

一个简单的示例如下所示:

from elasticsearch import Elasticsearch
from elasticsearch import helpers

es_src=Elasticsearch(host_src)   #原索引所在ES集群的host
es_des=Elasticsearch(host_des)   #新索引所在ES集群的host

body={"query":{"match_all":{}}}  #遍历原索引

helpers.reindex(client=es_src,source_index='wechat',target_index='wechat_new',target_client=es_des,query=body,chunk_size=1000) #重建索引 

reindex( )方法的具体定义如下:

elasticsearch.helpers.reindex(client, source_index, target_index, query=None, target_client=None, chunk_size=500, scroll=u'5m', scan_kwargs={}, bulk_kwargs={})
参数含义
client – 原索引所在ES
source_index – 读取documents的索引
target_index – 写入documents的索引
query – search( ) api的主体
target_client – 新索引所在ES
chunk_size – es传输docs时每块含有的docs数量
scroll – scroll的时间
scan_kwargs – additional kwargs to be passed to scan()
bulk_kwargs – additional kwargs to be passed to bulk()

从根本上来看,reindex( )方法是将scan&scorll 操作和bulk 操作组合到了一起,直接将scroll 得到的docs 通过bulk 导入到es 中,这两种操作的在Python elasticsearch.helpers中也有定义,你如果感兴趣的可以去阅读一下Python elasticsearch的文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值