您好,登錄后才能下訂單哦!
本篇內容介紹了“Elasticsearch Search API怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
詳細API如下:
public final SearchResponse sear-ch(SearchRequest searchReques-t, RequestOptions options) throws IOException
public final void searchAsync(Sear-chRequest searchRequest, Reque-stOptions options, ActionListener li-stener)
SearchRequest類圖:
其關鍵屬性說明如下:
private SearchType searchType = SearchType.DEFAULT:搜索類型
QUERY_THEN_FETCH
首先根據路由算法向相關分片發送請求,此時只返回documentId與一些必要信息(例如用于排序等),然 后對各個分片的結果進行匯聚、排序。然后選取客戶端需要獲取的數據條數(top n)。最后根據doc-umentId再向各個分片請求具體的文檔信息。
QUERY_AND_FETCH
在5.4.x版本開始廢棄,直接向各個分片節點請求數據,每個分片返回客戶端請求數量的文檔信息,然后匯聚并全部返回給客戶端,返回的數據為客戶端請求數量size * (路由后的分片數量)。
DFS_QUERY_THEN_FETCH
在開始向各個節點發送請求之前會先進行一次詞頻與相關性的計算,后續處理流程與QUERY_THEN_F-ETCH相同,可以看出該查詢類型的文檔相關性會更高,但性能比QUE-RY_THEN_FETCH要差。
private String[] indices:待查詢的索引庫。
private String routing:路由字段值。
private String preference:復制組內傾向性。
private SearchSourceBuilder sour-ce:查詢主體(rerquest body),后續會重點講解。
private Boolean requestCache:是否開啟查詢緩存。
private Boolean allowPartialSearc-hResults:是否允許部分成功。
private Scroll scroll:滾動API(用于分頁)
private int batchedReduceSize = DEFAULT_BATCHED_REDUCE_SIZE:批量歸并size:默認為512
private int maxConcurrentShardRequests = 0:建議最大值別超過256,其核心含義待研究。
private int preFilterShardSize = 128,其核心作用待研究。
private String[] types:待查詢的類型。
接下來再來重點關注一下查詢API幾個通用的參數:
timeout
查詢的超時時間。
from
查詢開始的偏移量,分頁參數,類似于關系數據庫的分頁的start。默認值為0。
size
批量獲取條數,用于分頁查詢。
search_type
查詢類型,6.4.0只支持QUERY_T-HEN_FETCH與DFS_QUERY_TH-EN_FETCH。
request_cache
查詢緩存,如果設置為false,取決于index級別的設置,將在索引管理API時詳細講解。
search_results
是否允許部分成功,例如一個查詢請求需要向3個分片發出請求,如果只有兩個分片成功返回結果而另外一個出現故障。如果設置為false則會返回整體失敗,如果設置為true則會成功部分結果,默認為true。
terminate after
一個查詢為每個分片最多收集的文檔數,當達到該數量是,查詢會提前結束。
batched_reduce_size
在協調節點上應該立即減少一次請求需要訪問的分片數量,如果一次請請求需要匯聚太多節點上的數據容易造成內存消耗,該值可作為一個保護機制,控制一個請求同一時間并發訪問的最大分片數量,默認為512。
注意:search_type,request_cache和allow_partial_search_results這三個參數,必須查詢url級別的參數(query str-ing parameters),如果使用Rest low Le-vel API時需要特別留意。
Elasticsearch支持使用URI請求模式來使用Search API,并不支持查詢請求體中所有參數,該模式主要用途是用于測試,諸如使用CURL查詢命令等。
URI Search示例如下:
1GET twitter/_search?q=user:kimchy
URI Search支持如下參數:
q
定義查詢字符串,其語法映射為DSL查詢語法之query_string。
df
查詢字符串未使用字段前綴時定義的默認字段。
analyzer
針對查詢字符串使用的分詞器。
analyze_wildcard
是否分析通配符合前綴查詢,默認值為false。
batched_reduce_size
控制協調節點批量發送分片的最大個數,主要是控制協調節點內存的消耗而提供的一種保護機制。
default_oprator
默認操作類型,可選值為and、or,默認值為or。
lenient
是否支持類型轉換異常,默認為fa-sle,如果將一個字符類型傳遞給一個數字類型會拋出異常。如果設置true則忽略該異常。
explain
類似于執行計劃,表示對于每一個命中,包含如果得分是如何算出來的,默認為false。
_source
用于對_source字段進行過濾,可以設置false來禁止返回_souce字段。該參數支持通配符表達式,例如ob-j.*,用于字段過濾。
stored_fields
用于字段過濾,已在字段過濾部分詳細介紹過。
sort
排序,可以類似于關系型數據庫的排序語法:fieldName:asc | desc,也可以使用特殊字段_score(表示按分數,默認值)。
track_scores
當使用排序時,跟蹤返回結果中分數計算過程。
track_total_hits
默認值為true,表示在返回結果中返回滿足該查詢條件的所有記錄數。
timeout
查詢超時時間,默認永不超時。
terminate_after
是否開啟提前結束查詢,主要是控制一次查詢,從一個分片中返回的最大文檔數量,如果開啟,返回結果中會包含一個響應參數terminate-d_early,指示是否提前結束。
from
用于分頁,起始記錄數。
size
用于分頁,控制一次查詢,從每個分片查詢的記錄條數。
search_type
查詢類型,已在文章開頭處介紹。
allow_partial_search_results
是否允許部分分片執行失敗,默認為true,也可以集群配置參數:se-arch.default_allow_partial_results來設置默認值。
“Elasticsearch Search API怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。