ES 學習2 搜尋

2021-09-07 11:49:54 字數 2074 閱讀 4955

1.空搜尋

返回所有索引下的所有文件

get /_search

設定超時。timeout

不是停止執行查詢,它僅僅是告知正在協調的節點返回到目前為止收集的結果並且關閉連線。在後台,其他的分片可能仍在執行查詢即使是結果已經被傳送了。

get /_search?timeout=10ms

2.多索引,多型別

/_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型別

3.分頁

在不指定數量時只會返回前10個文件。可以用size, from引數指定顯示的文件數量

size顯示應該返回的結果數量,預設是10from顯示應該跳過的初始結果數量,預設是0

get /_search?size=5

get /_search?size=5&from=5

get /_search?size=5&from=10

深度分頁問題

理解為什麼深度分頁是有問題的,我們可以假設在乙個有 5 個主分片的索引中搜尋。 當我們請求結果的第一頁(結果從 1 到 10 ),每乙個分片產生前 10 的結果,並且返回給 協調節點 ,協調節點對 50 個結果排序得到全部結果的前 10 個。

現在假設我們請求第 1000 頁--結果從 10001 到 10010 。所有都以相同的方式工作除了每個分片不得不產生前10010個結果以外。 然後協調節點對全部 50050 個結果排序最後丟棄掉這些結果中的 50040 個結果。

可以看到,在分布式系統中,對結果排序的成本隨分頁的深度成指數上公升。這就是 web 搜尋引擎對任何查詢都不要返回超過 1000 個結果的原因。

4.輕量搜尋

查詢在tweet型別中tweet字段包含elasticsearch單詞的所有文件

get /_all/tweet/_search?q=tweet:elasticsearch

查詢在name欄位中包含john並且在tweet欄位中包含mary的文件。

+name:john +tweet:mary

get /_search?q=%2bname%3ajohn+%2btweet%3amary

+字首表示必須與查詢條件匹配。類似地,-字首表示一定不與查詢條件匹配。沒有+或者-的所有其他條件都是可選的

下面的查詢針對tweents型別,並使用以下的條件:

+name:(mary john) +date:>2014-09-10 +(aggregations geo)

?q=%2bname%3a(mary+john)+%2bdate%3a%3e2014-09-10+%2b(aggregations+geo)

ES 學習2 搜尋

1.空搜尋 返回所有索引下的所有文件 get search 設定超時。timeout 不是停止執行查詢,它僅僅是告知正在協調的節點返回到目前為止收集的結果並且關閉連線。在後台,其他的分片可能仍在執行查詢即使是結果已經被傳送了。get search?timeout 10ms 2.多索引,多型別 sea...

ES 學習5 全文搜尋

全文搜尋兩個最重要的方面是 相關性,分析。一旦談論相關性或分析這兩個方面的問題時,我們所處的語境是關於查詢的而不是過濾。match 單個詞查詢 get my index my type search 步驟 1.分析字段型別,是string。2.分析查詢字串,得到乙個單詞quick。3.用term查詢...

ES 學習9 聚合2

按時間統計 date histogram get cars transactions search 注意,這種寫法在數字字段沒有問題,但是在文字字段使用之前必須先把對應欄位的fielddata設為true才可以。否則會報錯 caused by 注意,設定了fielddata會消耗大量記憶體。返回空b...