新建文檔、索引文檔和刪除文檔請求都是寫操作, 必須在主分片上面完成之后才能被復制到相關的副本分片。

新建,索引和刪除文檔所需要的步驟順序:
1)客戶端向 Node 1 發送新建、索引或者刪除請求。
2)節點使用文檔的 _id 確定文檔屬于分片 0 。請求會被轉發到 Node 3,因為分片 0 的主分片目前被分配在 Node 3 上。
3)Node 3 在主分片上面執行請求。如果成功了,它將請求并行轉發到 Node 1 和 Node 2 的副本分片上。一旦所有的副本分片都報告成功, Node 3 將向協調節點報告成功,協調節點向客戶端報告成功。
<br/>
在客戶端收到成功響應時,文檔變更已經在主分片和所有副本分片執行完成,變更是安全的。有一些可選的請求參數允許您影響這個過程,可能以數據安全為代價提升性能。這些選項很少使用,因為 Elasticsearch 已經很快,但是為了完整起見,請參考下面表格。
| 參數 | 含義 |
| --- | --- |
| consistency | consistency,即一致性。在默認設置下,即使僅僅是在試圖執行一個_寫_操作之前,主分片都會要求 必須要有 規定數量(quorum)(或者換種說法,也即必須要有大多數)的分片副本處于活躍可用狀態,才會去執行_寫_操作(其中分片副本可以是主分片或者副本分片)。這是為了避免在發生網絡分區故障(network partition)的時候進行_寫_操作,進而導致數據不一致。_規定數量_即:<br/>`int( (primary + number_of_replicas) / 2 ) + 1`<br/>consistency 參數的值可以設為 one (只要主分片狀態 ok 就允許執行_寫_操作),all(必須要主分片和所有副本分片的狀態沒問題才允許執行_寫_操作), 或quorum 。默認值為 quorum , 即大多數的分片副本狀態沒問題就允許執行_寫_操作。<br/>注意,規定數量 的計算公式中 number_of_replicas 指的是在索引設置中的設定副本分片數,而不是指當前處理活動狀態的副本分片數。如果你的索引設置中指定了當前索引擁有三個副本分片,那規定數量的計算結果即:<br/> `int( (primary + 3 replicas) / 2 ) + 1 = 3`<br/>如果此時你只啟動兩個節點,那么處于活躍狀態的分片副本數量就達不到規定數量,也因此您將無法索引和刪除任何文檔。|
| timeout | 如果沒有足夠的副本分片會發生什么? Elasticsearch 會等待,希望更多的分片出現。默認情況下,它最多等待 1 分鐘。 如果你需要,你可以使用 timeout 參數使它更早終止: 100 100 毫秒,30s 是 30 秒。 |
>[info]新索引默認有 1 個副本分片,這意味著為滿足規定數量應該需要兩個活動的分片副本。 但是,這些默認的設置會阻止我們在單一節點上做任何事情。為了避免這個問題,要求只有當 number_of_replicas 大 于 1 的時候,規定數量才會執行。
- Elasticsearch是什么
- 全文搜索引擎
- Elasticsearch與Solr
- 數據結構
- 安裝Elasticsearch
- Linux單機安裝
- Windows單機安裝
- 安裝Kibana
- Linux安裝
- Windows安裝
- es基本語句
- 索引操作
- 文檔操作
- 映射操作
- 高級查詢
- es-JavaAPI
- maven依賴
- 索引操作
- 文檔操作
- 高級查詢
- es集群搭建
- Linux集群搭建
- Windows集群搭建
- 核心概念
- 索引(Index)
- 類型(Type)
- 文檔(Document)
- 字段(Field)
- 映射(Mapping)
- 分片(Shards)
- 副本(Replicas)
- 分配(Allocation)
- 系統架構
- 分布式集群
- 單節點集群
- 故障轉移
- 水平擴容
- 應對故障
- 路由計算
- 分片控制
- 寫流程
- 讀流程
- 更新流程
- 多文檔操作流程
- 分片原理
- 倒排索引
- 文檔搜索
- 動態更新索引
- 近實時搜索
- 持久化變更
- 段合并
- 文檔分析
- 內置分析器
- 分析器使用場景
- 測試分析器
- 指定分析器
- 自定義分析器
- 文檔處理
- 文檔沖突
- 樂觀并發控制
- 外部系統版本控制
- es優化
- 硬件選擇
- 分片策略
- 合理設置分片數
- 推遲分片分配
- 路由選擇
- 寫入速度優化
- 批量數據提交
- 優化存儲設備
- 合理使用合并
- 減少Refresh的次數
- 加大Flush設置
- 減少副本的數量
- 內存設置
- 重要配置
- es常見問題
- 為什么要使用Elasticsearch
- master選舉流程
- 集群腦裂問題
- 索引文檔流程
- 更新和刪除文檔流程
- 搜索流程
- ES部署在Linux時的優化方法
- GC方面ES需要注意的點
- ES對大數據量的聚合實現
- 并發時保證讀寫一致性
- 字典樹
- ES的倒排索引
- Spring Data Elasticsearch
- 環境搭建
- 索引操作
- 文檔操作