es批量增删查

#!/usr/bin/env python

-- coding:utf-8 --

from elasticsearch.helpers import bulk
from elasticsearch.helpers import scan
import logging,arrow,time
from elasticsearch import Elasticsearch

class DealCeleryData():
def init(self, es, c_index, m_index):
self.es = es
self.c_index = c_index
self.m_index = m_index
def do_scroll(self, index, body):
try:
# raises an exception (ScanError) if an error is encountered (some shards fail to execute). 设置为False是为了考虑存在shard故障
return scan(client=self.es, query=body, index=index, scroll=u"10m", size=5000, request_timeout=30,
raise_on_error=False)
except Exception as e:
logging.error(“ERROR:get data form es by scan”, e)
return False
def delete_index(self, del_index, body):
# body = {“query”: {“match_all”: {}}}
self.es.delete_by_query(index=del_index, body=body, request_timeout=120, wait_for_completion=False)
def getData(self):
result = self.do_scroll(index=self.c_index, body=body)
new_each_record = each_record[’_source’]
yield {
‘_op_type’: ‘index’,
‘_index’: self.m_index,
‘_type’: “doc”,
'source’: new_each_record
}
def worker(self, actions, chunk_size=100, max_chunk_bytes=100 * 1024 * 1024):
try:
success, _ = bulk(self.es, actions=actions, chunk_size=chunk_size, max_chunk_bytes=max_chunk_bytes,
raise_on_error=True, request_timeout=180)
# print(“success:” + str(success))
# print(
)
except Exception as e:
print(“ERROR:bulk ,”, e)
logging.error(e, exc_info=1)

dcObject = DealCeleryData(es, c_index, m_index)
stream = dcObject.getData()
dcObject.worker(stream)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小金子的夏天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值