Elasticsearch批量查询mget

Elasticsearch批量查询mget教程

Elasticsearch 中,mget 操作用于批量查询文档,即,一次查询多条文档,同时,mget 操作不仅可以一次查询相同的 index 的数据,还可以一次查询不同 index 下的数据。

一条一条的查询,如果说要查询 100 条数据,那么就要发送 100 次网络请求,这个开销还是很大的。如果进行批量查询的话,查询 100 条数据,就只要发送 1 次网络请求,网络请求的性能开销缩减 100 倍。

Elasticsearch mget操作详解

语法

GET /_mget { "docs" : [ { "_index" : "index_name1", "_id" : id1 }, { "_index" : "index_name2", "_id" : id2 } ] }

参数

参数 描述
index_name1 需要查询的索引名
id1 需要查询的文档 id
index_name2 需要查询的索引名
id2 需要查询的文档 id

说明

这里的 index_name1 和 index_name2 可以相同,也可以不同。

Elasticsearch mget相同index详解

语法

GET index_name/_mget { "ids": [id1, id2, id3] }

参数

参数 描述
index_name 需要查询的索引名
id1 需要查询的文档 id
id2 需要查询的文档 id
id3 需要查询的文档 id

说明

这样的语法查询,只能查询同一个 index 下面的数据。

案例

mget操作

我们在 Kibana 的控制台上,输入以下代码,新建一个文档

PUT /haicodernet/_doc/1 { "index":"www.haicoder.net", "name" : "javascript", "desc" : "javascript module", "categorys" : 5, "author" : "jobs steven", "tags": [ "javascript", "vue" ] }

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

18_Elasticsearch批量查询mget操作.png

我们看到,此时我们创建文档成功了,现在,我们再次输入以下代码,再次创建一条文档:

PUT /haicodernet/_doc/2 { "index":"www.haicoder.net", "name" : "javascript", "desc" : "javascript module", "categorys" : 10, "author" : "william", "tags": [ "javascript", "dom" ] }

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

19_Elasticsearch批量查询mget操作.png

同样,我们再次创建一条记录,使用如下命令:

PUT /haicoder/_doc/1 { "index":"www.haicoder.net", "name" : "server", "desc" : "server module", "categorys" : 14, "author" : "jobs steven", "tags": [ "server", "linux" ] }

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

20_Elasticsearch批量查询mget操作.png

现在,我们使用 mget 操作,批量查看文档的内容,具体命令如下:

GET /_mget { "docs" : [ { "_index" : "haicodernet", "_id" : 1 }, { "_index" : "haicodernet", "_id" : 2 } ] }

查看结果,如下图所示:

21_Elasticsearch批量查询mget操作.png

我们可以看到,一次返回了两条记录,同时,我们还可以一次查询不同的 index 下面的数据,具体命令如下:

GET /_mget { "docs" : [ { "_index" : "haicodernet", "_id" : 1 }, { "_index" : "haicodernet", "_id" : 2 }, { "_index" : "haicoder", "_id" : 1 } ] }

查看结果,如下图所示:

22_Elasticsearch批量查询mget操作.png

运行后,我们可以看到,此时,一次性返回了三条记录。

mget同一index下数据

我们使用上面的三条记录,使用 mget 操作,批量查看文档的内容,具体命令如下:

GET haicodernet/_mget { "ids": [1, 2] }

查看结果,如下图所示:

23_Elasticsearch批量查询mget操作.png

我们可以看到,一次返回了两条记录。

Elasticsearch批量查询mget总结

在 Elasticsearch 中,mget 操作用于批量查询文档,即,一次查询多条文档,同时,mget 操作不仅可以一次查询相同的 index 的数据,还可以一次查询不同 index 下的数据。