06 ES批量操作 Bulk

Bulk API 基本用法

Bulk 是一个批量导入的接口

POST http://localhost:9200/_bulk

请求体

{ "index":  { "_index": "itest", "_type": "_doc", "_id": "15707" }}
{"jid":15707,"title":"Java开发工程师","salary":{"gte":9000,"lte":15000},"city":"北京","company":"北京威米信科技有限公司","description":"\n        1、参与软件的架构设计、流程设计、数据库设计等工作;2、参与软件相关技术文档的编写;3、完成开发框架搭建;4、根据项目/产品需要,开展技术攻关工作,确定技术路线;5、配合项目经理完成项目建设任务。任职资格:1、本科 以上学历,精通Java语言开发;2、熟练运用主流开源框架,如SSH,SpringMVC,MyBatis等;3、熟悉基于Oracle或者MySQL数据库的设计和开发,熟悉基于Ehcache,Redis,MongoDB的设计和开发;4、熟悉微服务spring boot、spring cloud、dubbo等,对业务中台、数据中台的设计思想深入理解;5、熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息、负载均衡等机制和实现;6、具有Vue等前端技术经验者优先。7、对前后端分离,分库分表等技术有实际操作经验;8、熟悉docker、kubernetes等。9、熟悉敏捷开发和项目管理经验经验者;10、熟练使用git,svn。\n                \n                                        职能类别:软件工程师\n                                            \n        微信分享\n        \n        \n    "}

返回值

  • 第一行说明
    index:代表操作类型index-重建索引 , create-创建, delete-删除
    _index:代表指向索引名
    _type:固定为_doc
    _id:要操作的数据id
    第二行则是要操作的数据
{
    "took": 83, #整个搜索花费了多少毫秒
    "errors": false, #整个过程是否包含错误
    "items": [
        {
            "index": { #每次操作后的结果
                "_index": "itest",
                "_type": "_doc",
                "_id": "15707",
                "_version": 2,
                "result": "updated",
                "_shards": {
                    "total": 2,
                    "successful": 1,
                    "failed": 0
                },
                "_seq_no": 23,
                "_primary_term": 1,
                "status": 200
            }
        }
    ]
}

refresh参数说明

三种使用形式

  • 默认,等待所有数据导入再刷新索引,即对查询暴露

POST http://localhost:9200/_bulk

  • 每发生一条数据变化,立即刷新索引,对外暴露会影响性能

POST http://localhost:9200/_bulk?refresh

  • 默认每一秒刷新一次索引,将最近一秒产生的数据刷新到索引
    可以通过设置index.refresh_interval修改刷新间隔

POST http://localhost:9200/_bulk?refresh=wait_for

注意

TIPS: Bulk只可用于小批量数据的导入,最大的允许单次请求100M. 如果需要大规模批量导
入数据,还需要借助logstash这样的三方工具.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容