我們在傳送任何乙個增刪改操作的時候,比如說put /index/type/id,都可以帶上乙個consistency引數,指明我們想要的寫一致性是什麼?
put /index/type/id?consistency=quorum
one:要求我們這個寫操作,只要有乙個primary shard是active活躍可用的,就可以執行
all:要求我們這個寫操作,必須所有的primary shard和replica shard都是活躍的,才可以執行這個寫操作
quorum:預設的值,要求所有的shard中,必須是大部分的shard都是活躍的,可用的,才可以執行這個寫操作
quroum = int( (primary + number_of_replicas) / 2 ) + 1
舉個例子,3個primary shard,number_of_replicas=1,總共有3 + 3 * 1 = 6個shard
quorum = int( (3 + 1) / 2 ) + 1 = 3
所以,要求6個shard中至少有3個shard是active狀態的,才可以執行這個寫操作
3個primary shard,replica=1,要求至少3個shard是active,3個shard按照之前學習的shard&replica機制,必須在不同的節點上,如果說只有1臺機器的話,是不是有可能出現說,3個shard都沒法分配齊全,此時就可能會出現寫操作無法執行的情況
1個primary shard,replica=3,quorum=((1 + 3) / 2) + 1 = 3,要求1個primary shard + 3個replica shard = 4個shard,其中必須有3個shard是要處於active狀態的。如果這個時候只有2臺機器的話,會出現什麼情況呢?
es提供了一種特殊的處理場景,就是說當number_of_replicas>1時才生效,因為假如說,你就乙個primary shard,replica=1,此時就2個shard
(1 + 1 / 2) + 1 = 2,要求必須有2個shard是活躍的,但是可能就1個node,此時就1個shard是活躍的,如果你不特殊處理的話,導致我們的單節點集群就無法工作
等待期間,期望活躍的shard數量可以增加,最後實在不行,就會timeout
我們其實可以在寫操作的時候,加乙個timeout引數,比如說put /index/type/id?timeout=30,這個就是說自己去設定quorum不齊全的時候,es的timeout時長,可以縮短,也可以增長
Elsticsearch的基本操作
面向文件的搜尋分析引擎 1 應用系統的資料結構都是物件導向的,複雜的 2 物件資料儲存到資料庫中,只能拆解開來,變為扁平的多張表,每次查詢的時候還得還原回物件格式,相當麻煩 3 es是面向文件的,文件中儲存的資料結構,與物件導向的資料結構是一樣的,基於這種文件資料結構,es可以提供複雜的索引,全文檢...
Elsticsearch的批量查詢
就是一條一條的查詢,比如說要查詢100條資料,那麼就要傳送100次網路請求,這個開銷還是很大的 如果進行批量查詢的話,查詢100條資料,就只要傳送1次網路請求,網路請求的效能開銷縮減100倍 1 一條一條的查詢 get test index test type 1 get test index te...
隨便寫一寫
簡單的來說,就是公私合營的一種模式。針對大型的公共設施建設,這種模式有著很大的優點。天子山鎮因其坐落於著名的天子山腳下而得名,鎮區內分布著奇特的石英砂巖峰林地貌 茂密的原始森林和清澈的溪流,自然村落形成的田園風光獨具特色,當地流傳的向王天子傳說 土家山寨和集鎮上臨街而建的吊腳樓 青石板人行街道 古香...