ElasticSearch批量查询

使用es批量查询

es的批量查询可以使用mget和msearch两种。其中mget是需要我们知道它的id,可以指定不同的index,也可以指定返回值source。msearch可以通过字段查询来进行一个批量的查找。

_mget

GET /_mget
{
    "docs" : [
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "1"
        },
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "2"
        }
    ]
}

这个是官方给出的例子。如果我们知道index,类型,id的情况下我们就可以通过mget来获取批量数据。也可以用source来指定返回数据。

_mget API

_msearch

GET twitter/_msearch
{}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 10}
{}
{"query" : {"match_all" : {}}}
{"index" : "twitter2"}
{"query" : {"match_all" : {}}}

在_msearch中,请求格式和bulk类似。查询一条数据需要两个对象,第一个设置index和type,第二个设置查询语句。查询语句和search相同。如果只是查询一个index,我们可以在url中带上index,这样,如果查该index可以直接用空对象表示。ps:必须要有两个对象,不然会将下一个查询语句作为index的索引语句。
_msearch的返回值是是一个对象

{
    "responses":[{Object},{Object}]
}

每条结果都对应上面的一对查询语句。如果某个查询语句有错,只有那个错误的Object会报错,其他会正常返回。

ps:使用kibana查询的时候不要format查询语句。会无法识别。因为_msearch的格式如下
header\n
body\n
header\n
body\n
format之后有\n,es无法识别

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容