ES 批量操作-bulk|学习笔记

简介: 快速学习 ES 批量操作-bulk。

开发者学堂课程【ElasticSearch 最新快速入门教程ES 批量操作-bulk】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/642/detail/10611


ES 批量操作-bulk

 

内容介绍:

一、讲义

二、详细笔记

三、演示

四、补充说明

 

一、讲义

Bulk 是将一个文件中一系列的索引信息进行批处理。

Bulk api 可以帮助我们同时执行多个请求

格式:

action:[index | create | update | delete]

metadata:index,type,id

request body:source(删除操作不需要)

{action:{metadata}}\n

{request body}\n

{action:{metadata}}\n

{request body}\n

create 和 index的区别

如果数据存在,使用 create 操作失败,会提示文档已经存在,使用 index 则可以成功执行。使用文件的方式

vi requests

curl -XPOST/PUT http://localhost:9200/index/type/ bulk --data-binary @path

比如curl -XPOST 'http://localhost:9200/bank/accout/ bulk?pretty'--data-binary "@data/accounts.json''

accounts 数据说明.txt

银行客户账号信息文档,文档 schema 如下

{

"account_number": 0,

"balance": 16623,

"firstname": "Bradshaw",

"lastname": "Mckenzie",

"age": 29,

"gender": "F",

"address": "244 Columbus Place",

"employer": "Euron",

"email": "bradshawmckenzie@euron.com",

"city": "Hobucken",

"state": "CO"

}

可以查看一下各个索引库信息

curl 'http://localhost:9200/ cat/indices?v'

Bulk 请求可以在 URL 中声明/index 或者/index/_type

Bulk 一次最大处理多少数据量

Bulk 会把将要处理的数据载入内存中,所以数据量是有限制的

 

二、详细笔记

步骤︰

①新建名为 bank 的索引库

②将待处理的数据上传到 linux 指定目录下

③进行批量导入操作

curl -H "Content-Type: application/json" -XPOST 'http://JANSON01:9200/bank/account/_bulk' --data-binary @/home/mike/data/accounts.json

批处理注意点说明︰

a) Bulk 请求可以在 URL 中声明/_index 或者/_index/_type

b) Bulk 一次最大处理多少数据量

Bulk 会把将要处理的数据载入内存中,所以数据量是有限制的

最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载

一般建议是1000~5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5~15MB,默认不能超过100M,可以在 es 的配置文件中修改这个值

http.max_content_length: 100mb

c) 灵活使用批处理操作,会大幅度提高程序执行的效率,但是,批处理操作的数据量是有一个临界值的,不是没有极限的!

 

三、演示

先来创建索引库,输入

curl -XPOST ‘http://JANSON01:9200/bank’

结果显示创建失败,再使用 put 进行创建,输入

curl -XPUT ‘http://JANSON01:9200/bank?pretty’

如图显示创建成功

image.png

然后将带批量新增的信息上传到 jerry 目录下,输入

ll

cd data/

ll

pwd

显示刚才定位到的路径 /home/jerry/data

上传文件时窗口下方有一个文件管理,打开按地址寻找到 elastic,然后点击上传,上传地址本节演示为 accounts.json

上传完成后输入ll,确认上传成功

再输入

curl -H ‘Content-Type: application/json’ -XPOST 'http://JANSON01:9200/bank/account/_bulk?pretty' --data-binary ‘@/home/jerry/accounts.json’

显示结果文件/home/jerry/accounts.json 不能被读

再来打开管理器选择 JANSON01查看路径

输入

su -l jerry

ll

cd data/

ll

pwd

显示结果为/home/jerry/data

在回到刚才管理器中修改

curl -H ‘Content-Type: application/json’ -XPOST 'http://JANSON01:9200/bank/account/_bulk?pretty' --data-binary ‘@/home/jerry/data/accounts.json’

运行成功,此时再来查询,输入

Curl -XGET ‘http://JANSON01:9200/bank/account/_search?pretty’

查询成功

 

四、补充说明

可以查看一下各个索引库信息

curl ‘http://janson01:9200/_cat/indices?v'

[root@JANSONO1~]#curl 'http://janson01:9200/_cat/indices?v'

health  status  index   uuid    pri  rep  docs.count docs.deleted store.size pri.store.size

yellow  open bigdata Np2VvkyQQeqtNyzOug8cOA 5 1 5 0  19.2kb 19.2kb

yellow  open bank  yrks_XJdsJWJZgo1btOGkQ 5 1  1000 0   482.7kb 482.7kb

ElasticSearch 的集群状态:

Green :所有的主分片和副分片都可用(主分片:es 集群中主节点上的分片;副分片∶es 集群中从节点上的分片)

Yellow:所有的主分片都可用,不是所有的副分片都可用

Red :不是所有的主分片和副分片都可用

相关文章
|
前端开发 API
ES 高级实战(四)查询 ES 数据
ES 高级实战(四)查询 ES 数据
1364 0
ES 高级实战(四)查询 ES 数据
|
5月前
|
存储 Unix 索引
ES常用查询命令
ES常用查询命令
|
5月前
|
自然语言处理 索引
03_ES数据查询操作
03_ES数据查询操作
81 0
|
5月前
|
存储
ES批量写入数据
ES批量写入数据
202 1
|
5月前
|
JSON 前端开发 JavaScript
ES6(2015)-ES13(2022)新增特性大总结
ES6(2015)-ES13(2022)新增特性大总结
83 0
|
5月前
|
API 开发工具 网络架构
springtboot 操作es
springtboot 操作es
|
JSON 移动开发 NoSQL
【ES系列九】——批量同步数据至ES
通过es官网提供的bulk方法进行实现
ES5新增方法(一)
前言 今天和大家分享一下ES5中一些新增的方法。 一、数组方法 迭代(遍历)方法:forEach(),map(),filter(),some(),every() array.forEach(function(value,index,arr)) value:数组当前项的值 index:数组当前项的索引 arr:数组对象本身
ES6中&&和 __ 鲜为人知的骚操作
ES6中&&和 __ 鲜为人知的骚操作
122 0
|
测试技术 索引
ES数据删除优化
分享一下ES数据删除优化的相关经历,根据业务需要一共优化了3次,包含了其中踩到的坑和一些花时间解决的问题.
1022 0