• ES bulk 批量操作


    bulk允许在一个请求中进行多个操作(create、index、update、delete),也就是可以在一次请求裡做很多事情

    也由于这个关系,因此bulk的请求体和其他请求的格式会有点不同

    bulk的请求模板

    分成action、metadata和doc三部份

    action : 必须是以下4种选项之一

      index(最常用) : 如果文档不存在就创建他,如果文档存在就更新他

      create : 如果文档不存在就创建他,但如果文档存在就返回错误

      使用时一定要在metadata设置_id值,他才能去判断这个文档是否存在

      update : 更新一个文档,如果文档不存在就返回错误

      使用时也要给_id值,且后面文档的格式和其他人不一样

      delete : 删除一个文档,如果要删除的文档id不存在,就返回错误

    使用时也必须在metadata中设置文档_id,且后面不能带一个doc,因为没意义,他是用_id去删除文档的

    metadata : 设置这个文档的metadata,像是_id、_index、_type...

    doc : 就是一般的文档格式

    bulk 如果一次性数据过多,很容易导致超时 

    elasticsearch.exceptions.ConnectionTimeout: ConnectionTimeout caused by - ReadTimeoutError(HTTPConnectionPool(host='192.168.0.92', port='9200'): Read timed out. (read timeout=10))

    查看bulk 源码发现

     

    @query_params('_source', '_source_exclude', '_source_include', 'fields',
            'pipeline', 'refresh', 'routing', 'timeout', 'wait_for_active_shards')
        def bulk(self, body, index=None, doc_type=None, params=None):

    有个timeout参数,可以设置超时时间,默认是10s

    bulk(es, actions, request_timeout=100)


     

  • 相关阅读:
    linux开启oracle服务
    一个tomcat多域名绑定多项目
    linux安装jdk1.7.0
    windows 查看端口进程和杀死进程
    windows2008 扩大远程连接数
    windows下用bak文件备份数据库
    linux常用命令
    mysql 开启远程连接访问
    windows 下tomcat安装
    IBM公司面试题
  • 原文地址:https://www.cnblogs.com/fly-kaka/p/11535018.html
Copyright © 2020-2023  润新知