首页 > 代码库 > 检索document(retrieving a document)

检索document(retrieving a document)

为了在ES中把document检索出来,我们使用_index,type,_id,但是请求的动作变为了GET:

GET /website/blog/123?pretty

响应的数据包括了我们已经熟悉的元素,另外还有使用JSON格式组织的document的_source字段,这个字段是我们存储的数据。

{
 
"_index":   "website",
 
"_type":    "blog",
 
"_id":      "123",
 
"_version":1,
 
"found":    true,
 
"_source":  {
     
"title":"My first blog entry",
     
"text":  "Just trying this out..."
     
"date":  "2014/01/01"
 
}
}

pretty参数

请求体添加pretty参数是告诉ES格式化返回响应数据。但是_source字段并没有格式化打印,而是按照我们存储的原样进行输出。

 

响应的数据包含了{"found": true}确认了查找的document是找到了,如没有找到就是false。另外HTTP消息头就是404而不是200,可以在curl请求总加入参数 -i 这样会显示HTTP的响应消息头。

curl -i -XGET /website/blog/124?pretty

结果如下:

HTTP/1.1404NotFound
Content-Type: application/json; charset=UTF-8
Content-Length:83

{
 
"_index":"website",
 
"_type":  "blog",
 
"_id":    "124",
 
"found":  false
}

检索部分document

默认情况下,GET请求会返回全部存储在_source中的document内容,但是也许你需要的不是全部的数据而是一部分,如title filed,单个的field使用_source参数进行查询,多个field可以指定使用逗号分割的数组。

GET /website/blog/123?_source=title,text

响应数据如下:

{
 
"_index":   "website",
 
"_type":    "blog",
 
"_id":      "123",
 
"_version":1,
 
"exists":   true,
 
"_source":{
     
"title":"My first blog entry",
     
"text":  "Just trying this out..."
 
}
}

如果不想要元数据可以使用_source作为结束

GET /website/blog/123/_source

返回数据如下:

{
   
"title":"My first blog entry",
   
"text":  "Just trying this out...",
   
"date":  "2014/01/01"
}

 

原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/get-doc.html