本篇內(nèi)容介紹了“Elasticsearch Search API怎么使用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
朗縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,朗縣網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為朗縣成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的朗縣做網(wǎng)站的公司定做!
詳細(xì)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類圖:
其關(guān)鍵屬性說(shuō)明如下:
private SearchType searchType = SearchType.DEFAULT:搜索類型
QUERY_THEN_FETCH
首先根據(jù)路由算法向相關(guān)分片發(fā)送請(qǐng)求,此時(shí)只返回documentId與一些必要信息(例如用于排序等),然 后對(duì)各個(gè)分片的結(jié)果進(jìn)行匯聚、排序。然后選取客戶端需要獲取的數(shù)據(jù)條數(shù)(top n)。最后根據(jù)doc-umentId再向各個(gè)分片請(qǐng)求具體的文檔信息。
QUERY_AND_FETCH
在5.4.x版本開(kāi)始廢棄,直接向各個(gè)分片節(jié)點(diǎn)請(qǐng)求數(shù)據(jù),每個(gè)分片返回客戶端請(qǐng)求數(shù)量的文檔信息,然后匯聚并全部返回給客戶端,返回的數(shù)據(jù)為客戶端請(qǐng)求數(shù)量size * (路由后的分片數(shù)量)。
DFS_QUERY_THEN_FETCH
在開(kāi)始向各個(gè)節(jié)點(diǎn)發(fā)送請(qǐng)求之前會(huì)先進(jìn)行一次詞頻與相關(guān)性的計(jì)算,后續(xù)處理流程與QUERY_THEN_F-ETCH相同,可以看出該查詢類型的文檔相關(guān)性會(huì)更高,但性能比QUE-RY_THEN_FETCH要差。
private String[] indices:待查詢的索引庫(kù)。
private String routing:路由字段值。
private String preference:復(fù)制組內(nèi)傾向性。
private SearchSourceBuilder sour-ce:查詢主體(rerquest body),后續(xù)會(huì)重點(diǎn)講解。
private Boolean requestCache:是否開(kāi)啟查詢緩存。
private Boolean allowPartialSearc-hResults:是否允許部分成功。
private Scroll scroll:滾動(dòng)API(用于分頁(yè))
private int batchedReduceSize = DEFAULT_BATCHED_REDUCE_SIZE:批量歸并size:默認(rèn)為512
private int maxConcurrentShardRequests = 0:建議最大值別超過(guò)256,其核心含義待研究。
private int preFilterShardSize = 128,其核心作用待研究。
private String[] types:待查詢的類型。
接下來(lái)再來(lái)重點(diǎn)關(guān)注一下查詢API幾個(gè)通用的參數(shù):
timeout
查詢的超時(shí)時(shí)間。
from
查詢開(kāi)始的偏移量,分頁(yè)參數(shù),類似于關(guān)系數(shù)據(jù)庫(kù)的分頁(yè)的start。默認(rèn)值為0。
size
批量獲取條數(shù),用于分頁(yè)查詢。
search_type
查詢類型,6.4.0只支持QUERY_T-HEN_FETCH與DFS_QUERY_TH-EN_FETCH。
request_cache
查詢緩存,如果設(shè)置為false,取決于index級(jí)別的設(shè)置,將在索引管理API時(shí)詳細(xì)講解。
search_results
是否允許部分成功,例如一個(gè)查詢請(qǐng)求需要向3個(gè)分片發(fā)出請(qǐng)求,如果只有兩個(gè)分片成功返回結(jié)果而另外一個(gè)出現(xiàn)故障。如果設(shè)置為false則會(huì)返回整體失敗,如果設(shè)置為true則會(huì)成功部分結(jié)果,默認(rèn)為true。
terminate after
一個(gè)查詢?yōu)槊總€(gè)分片最多收集的文檔數(shù),當(dāng)達(dá)到該數(shù)量是,查詢會(huì)提前結(jié)束。
batched_reduce_size
在協(xié)調(diào)節(jié)點(diǎn)上應(yīng)該立即減少一次請(qǐng)求需要訪問(wèn)的分片數(shù)量,如果一次請(qǐng)請(qǐng)求需要匯聚太多節(jié)點(diǎn)上的數(shù)據(jù)容易造成內(nèi)存消耗,該值可作為一個(gè)保護(hù)機(jī)制,控制一個(gè)請(qǐng)求同一時(shí)間并發(fā)訪問(wèn)的最大分片數(shù)量,默認(rèn)為512。
注意:search_type,request_cache和allow_partial_search_results這三個(gè)參數(shù),必須查詢url級(jí)別的參數(shù)(query str-ing parameters),如果使用Rest low Le-vel API時(shí)需要特別留意。
Elasticsearch支持使用URI請(qǐng)求模式來(lái)使用Search API,并不支持查詢請(qǐng)求體中所有參數(shù),該模式主要用途是用于測(cè)試,諸如使用CURL查詢命令等。
URI Search示例如下:
1GET twitter/_search?q=user:kimchy
URI Search支持如下參數(shù):
q
定義查詢字符串,其語(yǔ)法映射為DSL查詢語(yǔ)法之query_string。
df
查詢字符串未使用字段前綴時(shí)定義的默認(rèn)字段。
analyzer
針對(duì)查詢字符串使用的分詞器。
analyze_wildcard
是否分析通配符合前綴查詢,默認(rèn)值為false。
batched_reduce_size
控制協(xié)調(diào)節(jié)點(diǎn)批量發(fā)送分片的最大個(gè)數(shù),主要是控制協(xié)調(diào)節(jié)點(diǎn)內(nèi)存的消耗而提供的一種保護(hù)機(jī)制。
default_oprator
默認(rèn)操作類型,可選值為and、or,默認(rèn)值為or。
lenient
是否支持類型轉(zhuǎn)換異常,默認(rèn)為fa-sle,如果將一個(gè)字符類型傳遞給一個(gè)數(shù)字類型會(huì)拋出異常。如果設(shè)置true則忽略該異常。
explain
類似于執(zhí)行計(jì)劃,表示對(duì)于每一個(gè)命中,包含如果得分是如何算出來(lái)的,默認(rèn)為false。
_source
用于對(duì)_source字段進(jìn)行過(guò)濾,可以設(shè)置false來(lái)禁止返回_souce字段。該參數(shù)支持通配符表達(dá)式,例如ob-j.*,用于字段過(guò)濾。
stored_fields
用于字段過(guò)濾,已在字段過(guò)濾部分詳細(xì)介紹過(guò)。
sort
排序,可以類似于關(guān)系型數(shù)據(jù)庫(kù)的排序語(yǔ)法:fieldName:asc | desc,也可以使用特殊字段_score(表示按分?jǐn)?shù),默認(rèn)值)。
track_scores
當(dāng)使用排序時(shí),跟蹤返回結(jié)果中分?jǐn)?shù)計(jì)算過(guò)程。
track_total_hits
默認(rèn)值為true,表示在返回結(jié)果中返回滿足該查詢條件的所有記錄數(shù)。
timeout
查詢超時(shí)時(shí)間,默認(rèn)永不超時(shí)。
terminate_after
是否開(kāi)啟提前結(jié)束查詢,主要是控制一次查詢,從一個(gè)分片中返回的最大文檔數(shù)量,如果開(kāi)啟,返回結(jié)果中會(huì)包含一個(gè)響應(yīng)參數(shù)terminate-d_early,指示是否提前結(jié)束。
from
用于分頁(yè),起始記錄數(shù)。
size
用于分頁(yè),控制一次查詢,從每個(gè)分片查詢的記錄條數(shù)。
search_type
查詢類型,已在文章開(kāi)頭處介紹。
allow_partial_search_results
是否允許部分分片執(zhí)行失敗,默認(rèn)為true,也可以集群配置參數(shù):se-arch.default_allow_partial_results來(lái)設(shè)置默認(rèn)值。
“Elasticsearch Search API怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!