想要從Elasticsearch中獲取文檔,咱們使用一樣的_index、_type、_id,可是HTTP方法改成GET:web
GET /website/blog/123?prettyjson
響應包含了如今熟悉的元數據節點,增長了_source字段,它包含了在建立索引時咱們發送給Elasticsearch的原始文檔。app
{curl
"_index" : "website",this
"_type" : "blog",url
"_id" : "123",spa
"_version" : 1,blog
"found" : true,索引
"_source" : {文檔
"title": "My first blog entry",
"text": "Just trying this out...",
"date": "2014/01/01"
}
}
在任意的查詢字符串中增長pretty參數,相似於上面的例子。會讓Elasticsearch美化輸出(pretty-print)JSON響應以便更加容易閱讀。_source字段不會被美化,它的樣子與咱們輸入的一致。
GET請求返回的響應內容包括{"found": true}。這意味着文檔已經找到。若是咱們請求一個不存在的文檔,依舊會獲得一個JSON,不過found值變成了false。此外,HTTP響應狀態碼也會變成404.
咱們能夠在curl後加-i參數獲得響應頭:
curl -i -XGET http://localhost:9200/website/blog/124?pretty
如今響應相似於這樣:
HTTP/1.1 404 Not Found
Content-Type: application/json; charset=UTF-8
Content-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"
}