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
作為路由值