ElasticSearch裡面的偏好查詢

2021-09-19 22:08:57 字數 1019 閱讀 9401

**:

在es查詢的時候我們可以控制preference,來完成特定shard或節點上的資料查詢,預設情況下查詢是隨機的。

假如現在我們有乙份索引5個shard和3個副本,當乙個查詢請求過來的時候,查詢操作如何執行,在沒有使用路由的情況下5個shard的資料肯定都要查詢,然後查詢5個shard時候到底查的是主shard還是replia都是隨機的。

通過偏好查詢,我們可以有更多的選擇定製,比如我們可以設定只查詢主shard,或者只查replia,或者僅僅查某幾個節點的資料。

(1)_primary:只查詢主shard,也就是說不管你有多少個副本,只對主shard進行檢索,這種場景可以用在所有副本不可用的時候,強制讀取主shard資料。

(2)_primary_first:優先讀取主shard,如果主shard無效或者失敗,則會讀取其他shard

(3)_replica:只查詢replia

(4)_replica_first:優先查詢replia,如果replia無效就查詢其他的shard。

(5)_local:盡可能在本地執行查詢,不跨網路

(6)_prefer_nodes:abc,xyz 在指定的節點id上執行查詢

(7)_shards:2,3查詢指定分片上的資料,此外這種寫法還可以和前面的用法組合,如:_shards:2,3|_primary ,查詢分片2和3且在主節點上的資料

(8)_only_nodes :限制在特定的node上執行操作

(9)custom (string) value :使用自定義的值來保證同乙個值的資料,在乙個shard裡面,感覺有點像routing欄位的功能,暫時沒太理解如何使用這個功能,因為官網給的例子,只有查詢,在索引的時候沒有看到設定preference的功能:

get /_search?preference=xyzabc123

}}大多數時候是不需要刻意使用preference功能的,除非在一些特殊情況下,如shard不可讀,shard失敗,shard未分配情況,或者某些節點掛了,我們可以指定讀取正常shard的資料,雖然不完整,但也比整個服務不可用體驗要好。

ElasticSearch裡面的路由功能介紹

2019獨角獸企業重金招聘python工程師標準 在elaticsearch裡面,路由功能算是乙個高階用法,大多數時候我們用的都是系統預設的路由功能,我們知道乙個es索引可以分多個shard和每個shard又可以有多個replia,那麼現在思考乙個問題,我們新增進去的資料,是如何分布在各個shard...

js裡面for迴圈裡面的of和in區別

for in 語句用於遍歷陣列或者物件的屬性名稱 key 鍵名 陣列中的每個元素的索引被視為屬性名稱,所以在使用for in遍歷array時,拿到的是每個元素索引 for in 迴圈只遍歷可列舉屬性。像 array和 object使用內建建構函式所建立的物件都會繼承自object.prototype...

elasticsearch配置詳解

elasticsearch的config資料夾裡面有兩個配置檔案 elasticsearch.yml和logging.yml,第乙個是es的基本配置檔案,第二個是日誌配置檔案,es也是使用log4j來記錄日誌的,所以logging.yml裡的設定按普通log4j配置檔案來設定就行了。下面主要講解下e...