ES权威指南[官方文档学习笔记]-39 retrieving multiple documents

es:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_retrieving_multiple_documents.html

下一篇:http://my.oschina.net/qiangzigege/blog/264382

内容:

 

es,没有最快,只有更快,
绑定多个请求在一个请求里,可以避免处理每个请求带来的网络负载问题。
(这个技术算不上NB吧,基本都支持了。)
如果你知道你需要检索多个文档,一次请求的速度很快,而不是一个接着一个文档获取。

mget API 期望一组docs,每个元素包含_index,_type,_id元数据
你也可以指定_source参数来过滤字段。

GET /_mget
{
   "docs" : [
      {
         "_index" : "website",
         "_type" :  "blog",
         "_id" :    2
      },
      {
         "_index" : "website",
         "_type" :  "pageviews",
         "_id" :    1,
         "_source": "views"
      }
   ]
}

响应体也包含一组docs.按照请求对应的顺序返回。
每个响应

{
   "docs" : [
      {
         "_index" :   "website",
         "_id" :      "2",
         "_type" :    "blog",
         "found" :    true,
         "_source" : {
            "text" :  "This is a piece of cake...",
            "title" : "My first external blog entry"
         },
         "_version" : 10
      },
      {
         "_index" :   "website",
         "_id" :      "1",
         "_type" :    "pageviews",
         "found" :    true,
         "_version" : 2,
         "_source" : {
            "views" : 2
         }
      }
   ]
}

如果你检索的文档都在同一个index里(甚至同一个type),
你可以指定/_index或者/_index/_type在url里。

你也可以覆盖这些值。

GET /website/blog/_mget
{
   "docs" : [
      { "_id" : 2 },
      { "_type" : "pageviews", "_id" :   1 }
   ]
}

事实上,如果所有的文档有同样的_index,_type,

你可以这样来查询:
GET /website/blog/_mget
{
   "ids" : [ "2", "1" ]
}

注意:第二个文档不存在,
如果不存在

{
  "docs" : [
    {
      "_index" :   "website",
      "_type" :    "blog",
      "_id" :      "2",
      "_version" : 10,
      "found" :    true,
      "_source" : {
        "title":   "My first external blog entry",
        "text":    "This is a piece of cake..."
      }
    },
    {
      "_index" :   "website",
      "_type" :    "blog",
      "_id" :      "1",
      "found" :    false  
    }
  ]
}

文档没有找到。
第二个文档没找到,不影响第一个,每个文档独立执行。

HTTP响应体的代码是200,尽管有一个文档没找到,
事实上,就算都没找到,也还是200,
原因是mget本身已经成功执行了,
用户需要关注found字段的值。


你可能感兴趣的:(elasticsearch)