Elasticsearch bulk批量操作

Elasticsearch bulk批量操作教程

Elasticsearch 中,bulk 用于批量操作,常用的操作,比如 delete、create、index update 等都支持 bulk 操作。

bulk api 对 json 的语法,有严格的要求,每个 json 串不能换行,只能放一行,同时一个 json 串和一个 json 串之间,必须有一个换行。

bulk 操作中,任意一个操作失败,是不会影响其他的操作的,但是在返回结果里,会告诉你异常日志。

Elasticsearch bulk批量操作类型

操作 描述
delete 删除一个文档,只要 1 个 json 串就可以了。
create PUT /index/type/id/_create,强制创建。
index 普通的 put 操作,可以是创建文档,也可以是全量替换文档。
update 执行的 partial update 操作。

Elasticsearch bulk操作详解

语法

{"action": {"metadata"}} {"data"}

参数

参数 描述
action 操作。
metadata 元数据。
data 具体操作的数据。

bulk size最佳大小

bulk request 会加载到内存里,如果太大的话,性能反而会下降,因此需要反复尝试一个最佳的 bulk size。

一般从 1000 ~ 5000 条数据开始,尝试逐渐增加。另外,如果看大小的话,最好是在 5 ~ 15MB 之间。

案例

bulk批量操作

我们在 Kibana 的控制台上,输入以下代码,使用 bulk 批量创建两个文档:

POST /bulk { "create":{"_index":"haicodernet", "_id":"1"} } { "url": "www.haicoder.net", "module":"server"} { "create":{"_index":"haicodernet", "_id":"2"} } { "url": "www.haicoder.net", "module":"tools"}

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

24_Elasticsearch bulk批量操作.png

我们看到,此时我们创建了两个文档,现在,我们再次输入以下代码,执行 bulk 批量操作,分别执行删除文档、创建文档和更新文档:

POST haicodernet/bulk {"delete":{"_id":"1"}} {"delete":{"_id":"2"}} { "create":{"_index":"haicodernet", "_id":"1"} } { "url": "www.haicoder.net", "module":"server"} { "create":{"_index":"haicodernet", "_id":"2"} } { "url": "www.haicoder.net", "module":"tools"} {"update":{"_id":"1"}} {"doc":{"module":"Server"}}

输入完成后,我们点击运行按钮,输出了最终的运行结果,如下图所示:

25_Elasticsearch bulk批量操作.png

现在,我们查看文档的内容,具体命令如下:

GET haicodernet/_doc/1

查看结果,如下图所示:

26_Elasticsearch bulk批量操作.png

我们可以看到,返回了我们插入的数据。

Elasticsearch bulk批量操作总结

在 Elasticsearch 中,bulk 用于批量操作,常用的操作,比如 delete、create、index update 等都支持 bulk 操作。

bulk api 对 json 的语法,有严格的要求,每个 json 串不能换行,只能放一行,同时一个 json 串和一个 json 串之间,必须有一个换行。

bulk 操作中,任意一个操作失败,是不会影响其他的操作的,但是在返回结果里,会告诉你异常日志。