Elasticsearch的bulk用法(python)

    这篇文章介绍Elasticsearch的bulk在Python中的用法,bulk API可以在单个请求中一次执行多个操作(index,udpate,create,delete),使用这种方式可以极大的提升索引性能。

   在这里我们使用elasticsearch模块的helpers,helpers是bulk的帮助程序,是对bulk的封装。有三种方式bulk(),streaming_bulk(),parallel_bulk(),都需要接受Elasticsearch类的实例和一个可迭代的actions.actions里面的操作可以有多种。 

      官网:https://elasticsearch-py.readthedocs.io/en/master/helpers.html

import random
from elasticsearch import Elasticsearch
from elasticsearch import helpers

es=Elasticsearch(hosts='http://localhost',port=9200)
levels=['info','debug','warn','error']
actions=[]
for i in range(100):
    level=levels[random.randrange(0,len(levels))]
    action={'_op_type':'index',#操作 index update create delete  
            '_index':'log_level',#index
            '_type':'doc',  #type
            '_source':{'level':level}}
    actions.append(action)
#使用bulk方式
helpers.bulk(client=es,actions=actions)
#streaming_bulk与parallel_bulk类似  需要遍历才会运行
#都可以设置每个批次的大小,parallel_bulk还可以设置线程数  
for ok,response in helpers.streaming_bulk(es,actions):
        if not ok:
            print(response)
 

你可能感兴趣的:(Elasticsearch)