elasticsearch获取多个文档mget

作者: 鲁智深 分类: java 发布时间: 2018-05-12 02:20

尽管Elasticsearch已经很快了,但是它依旧可以更快。你可以将多个请求合并到一个请求中以节省网络开销。如果你需要从Elasticsearch中获取多个文档,你可以使用multi-get 或者 mget API来取代一篇又一篇文档的获取。

先创建一个索引

1
2
3
4
5
6
7
8
9
PUT testdb
{
  "settings": {
    "index":{
      "number_of_shards":5,#分片数量
      "number_of_replicas":1#副本数量
    }
  }
}

插入一些数据,多次执行

1
2
3
4
POST jobbole/job/
{
  "title":"1"#1,2,3,4
}
创建数据

创建数据

我们用mget去获取多条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
GET _mget
{
  "docs":[
    {"_index":"testdb",
     "_type":"shuju",
     "_id":"AWNQbaJ2kuAh_j7YwkJ8"
    },
    {
      "_index":"testdb",
      "_type":"shuju",
      "_id":"AWNQbci3kuAh_j7YwkJ-"
    }
  ]
}

发现上面数据的index和type都是一样的,那么我们可以简写,在GET中体现:

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
GET testdb/_mget
{
  "docs":[
    {
     "_type":"shuju",
     "_id":"AWNQbaJ2kuAh_j7YwkJ8"
    },
    {
      "_type":"shuju",
      "_id":"AWNQbci3kuAh_j7YwkJ-"
    }
  ]
}

GET testdb/shuju/_mget
{
  "docs":[
    {
     "_id":"AWNQbaJ2kuAh_j7YwkJ8"
    },
    {
      "_id":"AWNQbci3kuAh_j7YwkJ-"
    }
  ]
}

GET testdb/shuju/_mget
{
  "ids":["AWNQbaJ2kuAh_j7YwkJ8","AWNQbci3kuAh_j7YwkJ-"]
}

返回的数据是一样的,不同的type和index,我们用GET _mget第一种方法,更换type和index就可以了。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注