# 空白搜索
搜索API最常用的一種形式就是_空白搜索_,也就是不加任何查詢條件的,只是返回集群中所有文檔的搜索。
~~~
GET /_search
~~~
返回內容如下(有刪減):
~~~
{
"hits" : {
"total" : 14,
"hits" : [
{
"_index": "us",
"_type": "tweet",
"_id": "7",
"_score": 1,
"_source": {
"date": "2014-09-17",
"name": "John Smith",
"tweet": "The Query DSL is really powerful and flexible",
"user_id": 2
}
},
... 9 個結果被隱藏 ...
],
"max_score" : 1
},
"took" : 4,
"_shards" : {
"failed" : 0,
"successful" : 10,
"total" : 10
},
"timed_out" : false
}
~~~
### `hits`
返回內容中最重要的內容就是`hits`,它指明了匹配查詢的文檔的`總數`,`hits`數組里則會包含前十個匹配文檔——也就是搜索結果。
`hits`數組中的每一條結果都包含了文檔的`_index`, `_type`以及`_id`信息,以及`_source`字段。這也就意味著你可以直接從搜索結果中獲取到整個文檔的內容。這與其他搜索引擎只返回給你文檔編號,還需要自己去獲取文檔是截然不同的。
每一個元素還擁有一個`_score`字段。這個是_相關性評分_,這個數值表示當前文檔與查詢的匹配程度。通常來說,搜索結果會先返回最匹配的文檔,也就是說它們會按照`_score`由高至低進行排列。在這個例子中,我們并沒有聲明任何查詢,因此`_score`就都會返回`1`
`max_score`數值會顯示所有匹配文檔中的`_score`的最大值。
### `took`
`took`數值告訴我們執行這次搜索請求所耗費的時間有多少毫秒。
### `shards`
`_shards`告訴了我們參與查詢分片的總數,以及有多少`successful`和`failed`。通常情況下我們是不會得到失敗的反饋,但是有的時候它會發生。如果我們的服務器突然出現了重大事故,然后我們丟失了同一個分片中主從兩個版本的數據。在查詢請求中,無法提供可用的備份。這種情況下,Elasticsearch就會返回`failed提示,但是它還會繼續返回剩下的內容。
### `timeout`
`timed_out`數值告訴了我們查詢是否超時。通常,搜索請求不會超時。如果相比完整的結果你更需要的是快速的響應時間,這是你可以指定`timeout`值,例如`10`、`"10ms"`(10毫秒)或者`"1s"`(1分鐘):
~~~
GET /_search?timeout=10ms
~~~
Elasticsearch會盡可能地返回你指定時間內它所查到的內容。
> ### Timeout并不是終止者
這里應該強調一下`timeout`并不會終止查詢,它只是會在你指定的時間內返回_當時_已經查詢到的數據,然后關閉連接。在后臺,其他的查詢可能會依舊繼續,盡管查詢結果已經被返回了。
使用超時是因為你要保障你的品質,并不是因為你需要終止你的查詢。