• 检索文档
    • pretty
    • 检索文档的一部分

    检索文档

    想要从Elasticsearch中获取文档,我们使用同样的_index_type_id,但是HTTP方法改为GET

    1. GET /website/blog/123?pretty

    响应包含了现在熟悉的元数据节点,增加了_source字段,它包含了在创建索引时我们发送给Elasticsearch的原始文档。

    1. {
    2. "_index" : "website",
    3. "_type" : "blog",
    4. "_id" : "123",
    5. "_version" : 1,
    6. "found" : true,
    7. "_source" : {
    8. "title": "My first blog entry",
    9. "text": "Just trying this out...",
    10. "date": "2014/01/01"
    11. }
    12. }

    pretty

    在任意的查询字符串中增加pretty参数,类似于上面的例子。会让Elasticsearch美化输出(pretty-print)JSON响应以便更加容易阅读。_source字段不会被美化,它的样子与我们输入的一致。

    GET请求返回的响应内容包括{"found": true}。这意味着文档已经找到。如果我们请求一个不存在的文档,依旧会得到一个JSON,不过found值变成了false

    此外,HTTP响应状态码也会变成'404 Not Found'代替'200 OK'。我们可以在curl后加-i参数得到响应头:

    1. curl -i -XGET http://localhost:9200/website/blog/124?pretty

    现在响应类似于这样:

    1. HTTP/1.1 404 Not Found
    2. Content-Type: application/json; charset=UTF-8
    3. Content-Length: 83
    4. {
    5. "_index" : "website",
    6. "_type" : "blog",
    7. "_id" : "124",
    8. "found" : false
    9. }

    检索文档的一部分

    通常,GET请求将返回文档的全部,存储在_source参数中。但是可能你感兴趣的字段只是title。请求个别字段可以使用_source参数。多个字段可以使用逗号分隔:

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

    _source字段现在只包含我们请求的字段,而且过滤了date字段:

    1. {
    2. "_index" : "website",
    3. "_type" : "blog",
    4. "_id" : "123",
    5. "_version" : 1,
    6. "exists" : true,
    7. "_source" : {
    8. "title": "My first blog entry" ,
    9. "text": "Just trying this out..."
    10. }
    11. }

    或者你只想得到_source字段而不要其他的元数据,你可以这样请求:

    1. GET /website/blog/123/_source

    它仅仅返回:

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