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就可以了。

如果覺得我的文章對您有用,請隨意打賞。您的支持將鼓勵我繼續創作!

發表評論

電子郵件地址不會被公開。 必填項已用*標注

中了亿元大奖