# mget 批量查询 API
# 批量查询的好处
就是一条一条的查询,比如说要查询 100条 数据,那么就要发送 100次 网络请求,这个开销还是很大的
如果进行批量查询的话,查询 100条 数据,就只要发送 1次 网络请求,网络请求的性能开销缩减 100倍
# 不同 index 下
GET /_mget
{
"docs" : [
{
"_index" : "test_index",
"_type" : "test_type",
"_id" : 10
},
{
"_index" : "test_index",
"_type" : "test_type",
"_id" : 11
}
]
}
------ 响应
{
"docs": [
{
"_index": "test_index",
"_type": "test_type",
"_id": "10",
"_version": 2,
"found": true,
"_source": {
"test_field1": "test1",
"test_field2": "updated test2"
}
},
{
"_index": "test_index",
"_type": "test_type",
"_id": "11",
"_version": 3,
"found": true,
"_source": {
"num": 2,
"tags": []
}
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 是同一个 index 下
GET /test_index/_mget
{
"docs" : [
{
"_type" : "test_type",
"_id" : 10
},
{
"_type" : "test_type",
"_id" : 11
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
这里可以看出来了,在 api url 中是公共的,那么相同 type 下就可以这样写
GET /test_index/test_type/_mget
{
"docs" : [
{
"_id" : 10
},
{
"_id" : 11
}
]
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
但是这个可以简化成
GET /test_index/test_type/_mget
{
"ids":[10,11]
}
1
2
3
4
2
3
4
# mget 的重要性
可以说 mget 是很重要的,一般来说,在进行查询的时候,如果一次性要查询多条数据的话,那么一定要用 batch批量操作的 api
尽可能减少网络开销次数,可能可以将性能提升数倍,甚至数十倍,非常非常之重要