1.空搜索
最基本的搜索API表單是空搜索(empty search)绰垂,它沒有指定任何的查詢條件,只返回集群索引中的所有文檔:
響應結果中數據信息被包含在“hits”部分中谈撒,它包含了total字段來表示匹配到的文檔總數闰蛔,hits數組還包含了匹配到的前10條數據悟泵。
2.hits部分
hits數組中的每個結果都包含_index专钉、_type和文檔的_id字段,被加入到_source字段中這意味著在搜索結果中我們將可以直接使用全部文檔累铅。這不像其他搜索引擎只返回文檔ID跃须,需要你單獨去獲取文檔。
每個節(jié)點都有一個_score字段娃兽,這是相關性得分(relevance score)菇民,它衡量了文檔與查詢的匹配程度。默認的投储,返回的結果中關聯性最大的文檔排在首位第练;這意味著,它是按照_score降序排列的玛荞。這種情況下娇掏,我們沒有指定任何查詢,所以所有文檔的相關性是一樣的勋眯,因此所有結果的_score都是取得一個中間值1
max_score指的是所有文檔匹配查詢中_score的最大值婴梧。
3.took部分
響應結果包含took部分,took告訴我們整個搜索請求花費的毫秒數客蹋。
4.shards
響應結果中包含shards部分塞蹭,_shards節(jié)點告訴我們參與查詢的分片數(total字段),有多少是成功的(successful字段)讶坯,有多少的是失敗的(failed字段)番电。通常我們不希望分片失敗,不過這個有可能發(fā)生辆琅。如果我們遭受一些重大的故障導致主分片和復制分片都故障漱办,那這個分片的數據將無法響應給搜索請求。這種情況下婉烟,Elasticsearch將報告分片failed洼冻,但仍將繼續(xù)返回剩余分片上的結果。
5.timeout
time_out值告訴我們查詢超時與否隅很。一般的,搜索請求不會超時率碾。如果響應速度比完整的結果更重要叔营,你可以定義timeout參數為10或者10ms(10毫秒),或者1s(1秒)
Elasticsearch將返回在請求超時前收集到的結果所宰。
注:需要注意的是timeout不會停止執(zhí)行查詢绒尊,它僅僅告訴你目前順利返回結果的節(jié)點然后關閉連接。在后臺仔粥,其他分片可能依舊執(zhí)行查詢婴谱,盡管結果已經被發(fā)送蟹但,超時不是一個斷路器(circuit breaker)。
使用超時是因為對于你的業(yè)務需求(譯者注:SLA谭羔,Service-Level Agreement服務等級協(xié)議华糖,在此我翻譯為業(yè)務需求)來說非常重要,而不是因為你想中斷執(zhí)行長時間運行的查詢瘟裸。