一个GET 是相当简单的,可以直接得到指定的文档。现在尝试点稍微高级的功能,比如一个简单的搜索!

    第一个尝试的几乎是最简单的搜索了。我们使用下列请求来搜索所有的雇员:

    1. GET /megacorp/employee/_search

    可以看到,我们仍然使用索引库megacorp 以及类型employee,但与指定一个文档ID不同,这次使用_search。返回结果包括了所有三个文档,放在数组hits中。一个搜索默认返回 10 条结果。

    {
       "took":      6,
       "timed_out": false,
       "_shards": { ... },
       "hits": {
          "total":      3,
          "max_score":  1,
          "hits": [
             {
                "_index":         "megacorp",
                "_type":          "employee",
                "_id":            "3",
                "_score":         1,
                "_source": {
                   "first_name":  "Douglas",
                   "last_name":   "Fir",
                   "age":         35,
                   "about":       "I like to build cabinets",
                   "interests": [ "forestry" ]
                }
             },
             {
                "_index":         "megacorp",
                "_type":          "employee",
                "_id":            "1",
                "_score":         1,
                "_source": {
                   "first_name":  "John",
                   "last_name":   "Smith",
                   "age":         25,
                   "about":       "I love to go rock climbing",
                   "interests": [ "sports", "music" ]
                }
             },
             {
                "_index":         "megacorp",
                "_type":          "employee",
                "_id":            "2",
                "_score":         1,
                "_source": {
                   "first_name":  "Jane",
                   "last_name":   "Smith",
                   "age":         32,
                   "about":       "I like to collect rock albums",
                   "interests": [ "music" ]
                }
             }
          ]
       }
    }
    

    注意:返回结果不仅告知匹配了那些文档,还包含了整个文档本身:显示搜索结果给最终用户所需的全部信息。

    接下来,尝试下搜索姓氏为` Smith` 的雇员。为此,我们将使用一个高亮搜索,很容易通过命令行完成。这个方法一般涉及到一个查询字符串(query-string)搜索,因为我们通过一个URL参数来传递查询信息给搜索接口

    GET /megacorp/employee/_search?q=last_name:Smith
    

    我们仍然在请求路径中使用 _search 端点,并将查询本身赋值给参数 q= 。返回结果给出了所有的Smith:

    {
       ...
       "hits": {
          "total":      2,
          "max_score":  0.30685282,
          "hits": [
             {
                ...
                "_source": {
                   "first_name":  "John",
                   "last_name":   "Smith",
                   "age":         25,
                   "about":       "I love to go rock climbing",
                   "interests": [ "sports", "music" ]
                }
             },
             {
                ...
                "_source": {
                   "first_name":  "Jane",
                   "last_name":   "Smith",
                   "age":         32,
                   "about":       "I like to collect rock albums",
                   "interests": [ "music" ]
                }
             }
          ]
       }
    }