官方文件:
路由 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的螞蟻在一起。現在問題來了,他現在只有...