EslasticSearch查詢的相關api

2021-08-20 15:27:53 字數 2476 閱讀 2462

官方文件:

路由 routing

執行搜尋時,它將廣播到所有索引/索引碎片。我們可以通過提供路由引數來控制將要搜尋哪些分片。從而避免無效的查詢。例如,當我們想搜尋某人的微博時,路由值可以是使用者名稱:如下所示

post /twitter/tweet?routing=kimchy

在這種情況下,如果我們只想在特定使用者的推文上進行搜尋,我們可以將其指定為路由,這樣可以只搜尋指定的分片。

post /twitter/_search?routing=kimchy

},"filter" : }}

}}

2.自適應副本選擇 adaptive replica selection

我們可以啟用自適應副本選擇來替換

迴圈方式傳送請求到資料副本,

這允許協調節點基於以下標準將請求傳送到被認為是「最佳」的副本:

1.協調節點和包含資料副本的節點之間的過去請求的響應時間 

2.過去的搜尋請求需要在包含資料的節點上執行 

3.包含資料的節點上的搜尋執行緒池的佇列大小

我們可以通過更改設定開啟

動態群集

cluster.routing.use_adaptive_replica_selection from false to true:
put /_cluster/settings

}

3.統計組

搜尋可以與統計分組相關聯,統計分組保持每個組的統計聚合。它可以稍後使用索引統計api特別檢索。例如,下面是乙個搜尋主體請求,它將請求與兩個不同的組相關聯:

post /_search

},"stats" : ["group1", "group2"]

}

4.全域性搜尋超時

個人搜尋可能會有乙個超時作為請求正文搜尋的一部分。由於搜尋請求可能來自多個**,因此elasticsearch為全域性搜尋超時設定了乙個動態群集級別設定,適用於在請求正文搜尋中未設定超時的所有搜尋請求。預設值是沒有全域性超時。設定金鑰為

search.default_search_timeout

,可以使用群集更新設定端點進行設定。將此值設定為-1會將全域性搜尋超時重置為不超時。

5.搜尋的併發性和並行性

預設情況下,elasticsearch不會根據請求命中的分片數量而拒絕任何搜尋請求。雖然elasticsearch將優化協調節點上的搜尋執行,但大量的分片可能會對cpu和記憶體產生重大影響。組織資料通常是乙個更好的主意,這樣可以減少更大的碎片。如果您想要配置軟限制,則可以更新action.search.shard_count.limit群集設定,以拒絕搜尋太多分片的搜尋請求,

請求引數max_concurrent_shard_requests可用於控制搜尋api將為請求執行的最大併發分片請求數。應該使用此引數來保護單個請求不會超載群集(例如,如果每個節點的分片數量很高,預設請求將會觸及群集中的所有索引,從而導致碎片請求被拒絕)。此預設值是所有群集中資料節點的數量,但最多為256個

6.查詢

查詢api允許您執行搜尋查詢並取回與查詢匹配的結果。可以使用簡單的查詢字串作為引數或使用請求主體來請求查詢。後面我們將會介紹到

多索引多型別

所有查詢api都可以應用於索引中的多種型別,並支援多索引語法的多索引。例如,我們可以搜尋twitter索引中所有型別的所有文件:

get /twitter/_search?q=user:kimchy
我們也可以在特定型別中搜尋:

get /twitter/tweet,user/_search?q=user:kimchy
我們還可以在多個索引中搜尋具有特定標籤的所有推文(例如,每個使用者擁有自己的索引時)

get /kimchy,elasticsearch/_search?q=tag:wow
或者,我們可以使用_all佔位符搜尋所有可用索引中的所有推文:

get /_all/_search?q=tag:wow
甚至可以搜尋所有索引和所有型別:

get /_search?q=tag:wow
7.uri查詢(使用查詢字串作為引數)

通過提供請求引數,可以純粹使用uri執行搜尋請求。在使用此模式執行搜尋時,並非所有搜尋選項都顯示,但對於快速「捲曲測試」可能非常方便。這裡是乙個例子:

get twitter

/_search?q

=user

:kimchy

響應如下

,

"hits":}]

}}

這種方法通常不建議使用。不過你仍然可以檢視官方文件詳細學習

8、通過請求體進行查詢

Spring data jpa多表查多條件查詢

現有如下場景,需要根據a表的check code欄位和b表的store code check result欄位組合查詢,a表與b表的關聯關係為一對多。為了簡化查詢引數,我們對查詢引數進行了封裝,抽出了公共的querycondition public class querycondition publ...

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

並查集入門(普通並查集 帶刪除並查集 關係並查集)

什麼是並查集?通俗易懂的並查集詳解 普通並查集 基礎並查集 例題 題解 how many tables problem description lh boy無聊的時候很喜歡數螞蟻,而且,還給每乙隻小螞蟻編號,通過他長期的觀察和記錄,發現編號為i的螞蟻會和編號為j的螞蟻在一起。現在問題來了,他現在只有...