- 检索文档
pretty- 检索文档的一部分
检索文档
想要从Elasticsearch中获取文档,我们使用同样的_index、_type、_id,但是HTTP方法改为GET:
GET /website/blog/123?pretty
响应包含了现在熟悉的元数据节点,增加了_source字段,它包含了在创建索引时我们发送给Elasticsearch的原始文档。
{"_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参数,类似于上面的例子。会让Elasticsearch美化输出(pretty-print)JSON响应以便更加容易阅读。_source字段不会被美化,它的样子与我们输入的一致。
GET请求返回的响应内容包括{"found": true}。这意味着文档已经找到。如果我们请求一个不存在的文档,依旧会得到一个JSON,不过found值变成了false。
此外,HTTP响应状态码也会变成'404 Not Found'代替'200 OK'。我们可以在curl后加-i参数得到响应头:
curl -i -XGET http://localhost:9200/website/blog/124?pretty
现在响应类似于这样:
HTTP/1.1 404 Not FoundContent-Type: application/json; charset=UTF-8Content-Length: 83{"_index" : "website","_type" : "blog","_id" : "124","found" : false}
检索文档的一部分
通常,GET请求将返回文档的全部,存储在_source参数中。但是可能你感兴趣的字段只是title。请求个别字段可以使用_source参数。多个字段可以使用逗号分隔:
GET /website/blog/123?_source=title,text
_source字段现在只包含我们请求的字段,而且过滤了date字段:
{"_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"}
