get /_search
GET /_search?timeout=10ms
/_search在所有的索引中搜索所有的类型
/gb/_searchgb 索引中搜索所有的类型
/gb,us/_searchgbus 索引中搜索所有的文档
/g*,u*/_search在任何以 g 或者 u 开头的索引中搜索所有的类型
/gb/user/_searchgb 索引中搜索 user 类型
/gb,us/user,tweet/_searchgbus 索引中搜索 usertweet 类型
/_all/user,tweet/_search在所有的索引中搜索 usertweet 类型

返回结果如下:

  1. {
  2. "hits" : {
  3. "total" : 14,
  4. "hits" : [
  5. {
  6. "_index": "us",
  7. "_type": "tweet",
  8. "_id": "7",
  9. "_score": 1,
  10. "_source": {
  11. "date": "2014-09-17",
  12. "name": "John Smith",
  13. "tweet": "The Query DSL is really powerful and flexible",
  14. "user_id": 2
  15. }
  16. },
  17. ... 9 RESULTS REMOVED ...
  18. ],
  19. "max_score" : 1
  20. },
  21. "took" : 4,
  22. "_shards" : {
  23. "failed" : 0,
  24. "successful" : 10,
  25. "total" : 10
  26. },
  27. "timed_out" : false
  28. }

结果分析

hits

返回结果中最重要的部分是 hits ,它包含 total 字段来表示匹配到的文档总数,并且一个 hits 数组包含所查询结果的前十个文档。
hits 数组中每个结果包含文档的 _index_type_id ,加上 _source 字段。这意味着我们可以直接从返回的搜索结果中使用整个文档。这不像其他的搜索引擎,仅仅返回文档的ID,需要你单独去获取文档。
每个结果还有一个 _score ,它衡量了文档与查询的匹配程度。默认情况下,首先返回最相关的文档结果,就是说,返回的文档是按照 _score 降序排列的。在这个例子中,我们没有指定任何查询,故所有的文档具有相同的相关性,因此对所有的结果而言 1 是中性的 _score

took

took 值告诉我们执行整个搜索请求耗费了多少毫秒。

shards

_shards 部分告诉我们在查询中参与分片的总数,以及这些分片成功了多少个失败了多少个。正常情况下我们不希望分片失败,但是分片失败是可能发生的。如果我们遭遇到一种灾难级别的故障,在这个故障中丢失了相同分片的原始数据和副本,那么对这个分片将没有可用副本来对搜索请求作出响应。假若这样,Elasticsearch 将报告这个分片是失败的,但是会继续返回剩余分片的结果。

timeout

timed_out 值告诉我们查询是否超时。默认情况下,搜索请求不会超时。如果低响应时间比完成结果更重要,你可以指定 timeout 为 10 或者 10ms(10毫秒),或者 1s(1秒):
GET /_search?timeout=10ms

max_score 值是与查询所匹配文档的 _score 的最大值。