鍍金池/ 教程/ Java/ 新建、索引和刪除文檔
創(chuàng)建索引
文檔局部更新
映射
查詢與過濾條件的合并
取回階段
查詢地理形狀
相關(guān)性簡介
動態(tài)索引
處理沖突
geohash單元聚合器
主分片和復(fù)制分片如何交互
自定義分析器
下一步
過濾順序
空集群
數(shù)據(jù)吞吐
地理坐標(biāo)點(diǎn)
嵌套-映射
動態(tài)映射
在查詢中使用已索引的形狀
局部更新文檔
包含,而不是相等
范圍
檢索文檔
映射及分析
結(jié)語
結(jié)構(gòu)化查詢 Query DSL
驗(yàn)證查詢
查找準(zhǔn)確值
Geohashes
結(jié)構(gòu)化搜索
復(fù)合核心字段類型
嵌套-集合
與Elasticsearch交互
請求體查詢
自定義動態(tài)索引
簡易搜索
索引一個(gè)文檔
地理形狀
緩存地理位置過濾器
多文檔模式
  • 1.
分布式搜索的執(zhí)行方式
安裝Elasticsearch
地理位置聚合
分析和分析器
元數(shù)據(jù):_all 字段
地理坐標(biāo)盒模型過濾器
類型和映射
合并段
查詢多個(gè)準(zhǔn)確值
嵌套-查詢
  • 1.
為什么是奇怪的格式?
Geohashes 映射
關(guān)于緩存
開始第一步
為了搜索,你懂的
分布式的特性
添加索引
確切值(Exact values) vs. 全文文本(Full text)
掃描和滾屏
相關(guān)性排序
教程小結(jié)
數(shù)據(jù)字段
增加故障轉(zhuǎn)移
按距離排序
索引管理
分布式文檔存儲
geohash單元過濾器
嵌套排序
檢索多個(gè)文檔
新建、索引和刪除文檔
Geohashes
檢索文檔
減少內(nèi)存占用
重新索引數(shù)據(jù)
檢索文檔
按距離聚合
什么是文檔?
繼續(xù)擴(kuò)展
集群健康
入門
映射(mapping)
近實(shí)時(shí)搜索
地理形狀的過濾與緩存
集群內(nèi)部工作方式
應(yīng)對故障
范圍(邊界)聚合器
分析
分頁
刪除文檔
倒排索引
索引地理形狀
嵌套-對象
  • 1.
橫向擴(kuò)展
查詢階段
元數(shù)據(jù):_source 字段
多索引和多類別
路由文檔到分片
索引設(shè)置
williamzhao
多值字段字符串排序
創(chuàng)建一個(gè)新文檔
配置分析器
地理形狀
更新整個(gè)文檔
面向文檔
處理 Null 值
映射地理形狀
使文本可以被搜索
索引別名和零停機(jī)時(shí)間
通過地理坐標(biāo)點(diǎn)過濾
地理距離過濾器
搜索——基本的工具
空搜索
搜索選項(xiàng)
更新時(shí)的批量操作
最重要的查詢過濾語句
結(jié)語
組合過濾
地理位置聚合
根對象
默認(rèn)映射
文檔 ID
持久化變更
檢查文檔是否存在
入門
地理坐標(biāo)點(diǎn)

新建、索引和刪除文檔

新建、索引和刪除文檔

新建、索引和刪除請求都是寫(write)操作,它們必須在主分片上成功完成才能復(fù)制到相關(guān)的復(fù)制分片上。

新建、索引或刪除單一文檔

下面我們羅列在主分片和復(fù)制分片上成功新建、索引或刪除一個(gè)文檔必要的順序步驟:

  1. 客戶端給Node 1發(fā)送新建、索引或刪除請求。
  2. 節(jié)點(diǎn)使用文檔的_id確定文檔屬于分片0。它轉(zhuǎn)發(fā)請求到Node 3,分片0位于這個(gè)節(jié)點(diǎn)上。
  3. Node 3在主分片上執(zhí)行請求,如果成功,它轉(zhuǎn)發(fā)請求到相應(yīng)的位于Node 1Node 2的復(fù)制節(jié)點(diǎn)上。當(dāng)所有的復(fù)制節(jié)點(diǎn)報(bào)告成功,Node 3報(bào)告成功到請求的節(jié)點(diǎn),請求的節(jié)點(diǎn)再報(bào)告給客戶端。

客戶端接收到成功響應(yīng)的時(shí)候,文檔的修改已經(jīng)被應(yīng)用于主分片和所有的復(fù)制分片。你的修改生效了。

有很多可選的請求參數(shù)允許你更改這一過程。你可能想犧牲一些安全來提高性能。這一選項(xiàng)很少使用因?yàn)镋lasticsearch已經(jīng)足夠快,不過為了內(nèi)容的完整我們將做一些闡述。

replication

復(fù)制默認(rèn)的值是sync。這將導(dǎo)致主分片得到復(fù)制分片的成功響應(yīng)后才返回。

如果你設(shè)置replicationasync,請求在主分片上被執(zhí)行后就會返回給客戶端。它依舊會轉(zhuǎn)發(fā)請求給復(fù)制節(jié)點(diǎn),但你將不知道復(fù)制節(jié)點(diǎn)成功與否。

上面的這個(gè)選項(xiàng)不建議使用。默認(rèn)的sync復(fù)制允許Elasticsearch強(qiáng)制反饋傳輸。async復(fù)制可能會因?yàn)樵诓坏却渌制途w的情況下發(fā)送過多的請求而使Elasticsearch過載。

consistency

默認(rèn)主分片在嘗試寫入時(shí)需要規(guī)定數(shù)量(quorum)或過半的分片(可以是主節(jié)點(diǎn)或復(fù)制節(jié)點(diǎn))可用。這是防止數(shù)據(jù)被寫入到錯(cuò)的網(wǎng)絡(luò)分區(qū)。規(guī)定的數(shù)量計(jì)算公式如下:

int( (primary + number_of_replicas) / 2 ) + 1

consistency允許的值為one(只有一個(gè)主分片),all(所有主分片和復(fù)制分片)或者默認(rèn)的quorum或過半分片。

注意number_of_replicas是在索引中的的設(shè)置,用來定義復(fù)制分片的數(shù)量,而不是現(xiàn)在活動的復(fù)制節(jié)點(diǎn)的數(shù)量。如果你定義了索引有3個(gè)復(fù)制節(jié)點(diǎn),那規(guī)定數(shù)量是:

int( (primary + 3 replicas) / 2 ) + 1 = 3

但如果你只有2個(gè)節(jié)點(diǎn),那你的活動分片不夠規(guī)定數(shù)量,也就不能索引或刪除任何文檔。

timeout

當(dāng)分片副本不足時(shí)會怎樣?Elasticsearch會等待更多的分片出現(xiàn)。默認(rèn)等待一分鐘。如果需要,你可以設(shè)置timeout參數(shù)讓它終止的更早:100表示100毫秒,30s表示30秒。

注意:

新索引默認(rèn)有1個(gè)復(fù)制分片,這意味著為了滿足quorum的要求需要兩個(gè)活動的分片。當(dāng)然,這個(gè)默認(rèn)設(shè)置將阻止我們在單一節(jié)點(diǎn)集群中進(jìn)行操作。為了避開這個(gè)問題,規(guī)定數(shù)量只有在number_of_replicas大于一時(shí)才生效。