美文网首页Elasticsearch
Elasticsearch 批量操作bulk

Elasticsearch 批量操作bulk

作者: 菜花_Q | 来源:发表于2018-04-23 12:33 被阅读61次

    批量操作bulk

    介绍bulk批量操作API

    为了实现多个文档的create、index、update或delete。

    官网文档:Bulk API | Elasticsearch Reference [6.2] | Elastic

    请求体格式

    #请求体格式如下:

    {action:{ metadata}}\n

    {request body}\n

    {action:{metadata}}\n

    {request body}\n

    ...

    #\n是换行的转义符号,bulk通过换行识别每一个请求数据,不换行bulk无法区分。json数据不可美化展示。(如图:不能美化展示),因为美化展示的话,就会有多余的换行,bulk无法识别。

    为什么是这样的请求体格式:和Elasticsearch的架构设计有关,Elasticsearch的数据是分片的,分片分布在每个节点上,如果请求的数据不换行,会消耗很大的资源解析数据,如果批量操作的数据很大,所需要的内存和cpu资源会很高,不符合Elasticsearch实时快速的特点,Elasticsearch通过换行,在网络缓冲区中,一行一行读取数据,能够更加快速和低消耗的处理每个请求

    action

    例:{"delete":{"_index":"library","_type":"books","_id":"1"}}

    不能美化展示、

    #多重模式

    #批量操作bulk

    POST /library/books/_bulk

    { "index": {"_id":1}}

    {"title":"Elasticsearch: The Definitive Guide","price":5}

    {"index": {"_id":2}}

    {"title":"The Elasticsearch cookbook","price":15}

    {"index":{"_id":3}}

    {"title":"Elasticsearch Blueprints","price":9}

    {"index":{"_id":4}}

    {"title":"Thinking in Python","price":22}

    {"index":{"_id":5}}

    {"title":"Thinking in Java","price":7}

    GET /library/

    GET /library/books/_mget

    {

        "ids": ["1","2","3","4","5"]

    }

    #当然还可以有delete,update等操作

    #注意delete下面没有具体的request body

    POST /library/books/_bulk

    {"delete":{"_index":"library","_type":"books","_id":"1"}}

    {"create":{"_index":"music","_type":"classical","_id": "1"}}

    {"title": "Ave Verum Corpus" }

    {"index":{"_index": "music","_type": "classical"}}

    {"title":"Litaniac de Venerabili Altaris Sacromento"}

    {"update": {"_index": "library","_type":"books","_id":"2"}}

    {"doc":{"price":"18"}}

    GET /library/books/1

    GET /library/books/_mget

    {

        "ids": ["1","2","3","4","5"]

    }

    bulk处理文档大小的最佳值

    数据加载在每个节点里的RAM里

    请求的数据超过一定的大小,那bulk的处理性能就会降低

    文档数据大小跟硬件配置、文档复杂度,以及当前集群的负载有关

    如何确定文档数据的大小

    在实际环境当中,慢慢增加数据量,然后观察集群性能的变化,比如可以根据当前集群的情况,依次先处理5000个文档,如果没有什么大问题,可以在增加5000,直到开始发现性能有所下降为止,在操作的时候,最好通过,插件,监控仪表数据综合判断

    相关文章

      网友评论

        本文标题:Elasticsearch 批量操作bulk

        本文链接:https://www.haomeiwen.com/subject/wuvklftx.html