欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

elasticsearch6.7 05. Document APIs(8)Multi Get API

程序员文章站 2022-06-25 16:24:30
7、Multi Get API(Multi Get API) multi GET API 允许你一次性获取多个文档,你需要指定 数组,其中包含了所有你需要查询的文档,每个查询结构至少包含索引,类型和文档id。如果操作过程中遇到错误将会返回错误信息。返回的结果与 GET API 的结果结构类似。 如下 ......

7、multi get api(multi get api)

multi get api 允许你一次性获取多个文档,你需要指定docs数组,其中包含了所有你需要查询的文档,每个查询结构至少包含索引,类型和文档id。如果操作过程中遇到错误将会返回错误信息。返回的结果与 get api 的结果结构类似。

如下例所示:

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

mget 也可以仅仅针对一个索引使用:

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

或者针对一个类型使用:

get /test/_doc/_mget
{
    "docs" : [
        {
            "_id" : "1"
        },
        {
            "_id" : "2"
        }
    ]
}

如果仅指定id参数的话,也可以用一个id数组来指定:

get /test/_doc/_mget
{
    "ids" : ["1", "2"]
}

7.1 字段过滤(source filtering)

默认情况下,将为每个文档(如果存储)返回_source中的所有字段。和 get api 类似,您可以通过设置_source 参数指定_source 中需要返回的字段。您也可以用 url 参数中的_source_source_include_source_exclude来设置,如:

get /_mget
{
    "docs" : [
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "1",
            "_source" : false
        },
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "2",
            "_source" : ["field3", "field4"]
        },
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "3",
            "_source" : {
                "include": ["user"],
                "exclude": ["user.location"]
            }
        }
    ]
}

7.2 字段(fileds)

为了节省内存和存储空间,你可能不启用_source,使用store保存部分字段。指定为stored 的字段可以通过stored_fields字段获得:

get /_mget
{
    "docs" : [
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "1",
            "stored_fields" : ["field1", "field2"]
        },
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "2",
            "stored_fields" : ["field3", "field4"]
        }
    ]
}

或者,在url中指定 stored_fields,作为所有文档默认查询的字段:

get /test/_doc/_mget?stored_fields=field1,field2
{
    "docs" : [
        {
            "_id" : "1" 【1】
        },
        {
            "_id" : "2",
            "stored_fields" : ["field3", "field4"] 【2】
        }
    ]
}

【1】:返回field1和field2字段

【2】:返回field3和field4字段

7.3 路由(routing)

您也可以指定 routing 参数

get /_mget?routing=key1
{
    "docs" : [
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "1",
            "routing" : "key2"
        },
        {
            "_index" : "test",
            "_type" : "_doc",
            "_id" : "2"
        }
    ]
}

test/_doc/2 文档会使用key1作为路由值,test/_doc/1文档会使用key2作为路由值

7.4 安全(security)

查阅url-based access control