1. 程式人生 > >Elasticsearch(5):新增文件

Elasticsearch(5):新增文件

 

1 ES資料讀寫流程¶

ES中,每個索引都將被劃分為若干分片,每個分片可以有多個副本。這些副本共同組成複製組,複製組中的分片在新增或刪除文件時必須保持同步,否則,從一個副本中讀取的資料將與從另一個副本讀取的結果有差異。保持複製組中分片資料同步以及從它們中讀取的過程稱為資料複製模型。

ES的資料複製模型基於主備份模型,這種模型使用複製組的一個分片作為主分片,複製組中其他分片作為副本分片。主分片是所有索引操作的主要入口點,負責驗證操作的有效性。一旦主分片通過操作驗證,主資料庫還負責將該操作複製到其他副本。

1.1 資料寫入流程¶

ES中的每個索引操作首先解析到對應的複製組中,通常基於文件 ID,確定複製組後,操作將在內部轉發到複製組的當前主分片。主分片介紹到操作請求後,將對操作請求進行驗證再轉發到其他副本中。

主分片遵循以下基本流:

(1)驗證傳入操作,並在結構無效時拒絕它(例如:給定值與欄位型別不匹配)

(2)在本地執行操作,即索引或刪除相關文件。這也需要驗證欄位的內容,並根據需要拒絕(例如:關鍵字值太長)。

(3)將操作轉發到當前同步副本集的每個副本。如果有多個副本,則並行執行。

(4)一旦所有副本成功執行了該操作並響應了主副本,主副本將確認成功完成對客戶端的請求。

1.2 資料讀取流程¶

ES中的讀取可以是非常輕量級的按 ID 查詢,也可以是具有複雜聚合的重搜尋請求。ES所採用的主備份模型的一大亮點就是它使所有分片副本保持同步,因此,單個同步副本足以提供讀取請求。

當節點收到讀取請求時,該節點負責將該請求轉發到包含相關資料的分片節點、整理響應以及響應客戶端。基本流程如下:

(1)將讀取請求解析為相關分片。請注意,由於大多數搜尋將傳送到一個或多個索引,因此它們通常需要從多個分片讀取,每個分片表示資料的不同子集。

(2)從分片複製組中選擇每個相關分片的活動副本。這可以是主分片,也可以是副本分片。預設情況下,彈性搜尋將只是在分片副本之間迴圈。

(3)將各分片讀取請求傳送到所選副本分片。

(4)合併結果並做出響應。注意,在通過 ID 查詢的情況下,只有一個分片是相關的,可以跳過此步驟。

2 文件寫入操作¶

使用下列API可以將一個JSON文件新增到指定的索引中,如果在指定索引中已存在該文件,那麼這一操作將會更新文件,並使文件的version自增1。

PUT /<target>/_doc/<_id>

POST /<target>/_doc/

PUT /<target>/_create/<_id>

POST /<target>/_create/<_id>

其中,target是一個必填引數,指的是目標索引,如果目標索引不存在,那麼將會自動建立一個索引;_id是一個可選引數,指的是為文件指定的唯一標識,如果省略_id引數的話,將會和POST /<target>/_doc/API一樣,自動為文件設定一個id。

  • 唯一標識(_id)

上圖例項中,users索引原本是不存在的,建立文件時,將自動建立索引,另外,由於建立文件時,並未指定_id,ES將自動為文件設定一個_id,注意,_id是ES對文件的唯一標識,與文件內容中的id是不一樣的。如下所示,新增文件時指定_id引數:

相關推薦

Elasticsearch5新增

  1 ES資料讀寫流程¶ ES中,每個索引都將被劃分為若干分片,每個分片可以有多個副本。這些副本共同組成複製組,複製組中的分片在新增或刪除文件時必須保持同步,否則,從一個副本中讀取的資料將與從另一個副本讀取的結果有差異。保持複製組中分片資料同步以及從它們中讀取的過程稱為資料複製

Nginx實用教程配置入門

affinity type 服務 源碼編譯 設置時間 shutdown ber 可用 控制指令 Nginx配置文件結構 nginx配置文件由指令(directive)組成,指令分為兩種形式,簡單指令和區塊指令。 一條簡單指令由指令名、參數和結尾的分號(;)組成,例如:

Java開發小技巧配置敏感信息處理

加載 gem 加密解密 -i false valid ges enc factory 前言 不知道在上一篇文章中你有沒有發現,jdbc.properties中的數據庫密碼配置是這樣寫的: jdbc.password=5EF28C5A9A0CE86C2D231A526ED5

Linux自學筆記6Linux系統及類型

linux文件類型 linux文件系統 Linux的文件系統:跟文件系統(rootfs)root filesystem LSB,FHS:linux發行標準1 bin boot dev etc home lib lib64 media mnt opt proc root run

JPA hibernate spring repository pgsql java 工程sql導入數據,測試數據

ber tracking evel 主鍵 出現 一個 OS resources pos 使用jpa保存查詢數據都很方便,除了在代碼中加入數據外,可以使用sql進行導入。目前我只會一種方法,把數據集中在一個sql文件中。 而且數據在導入中常常具有先後關系,需要用串行的方式導

《Linux學習並不難》系統管理1xfs系統介紹

Linux xfs 文件系統 18.1 《Linux學習並不難》文件系統管理(1):xfs文件系統介紹xfs是一種高性能的64位日誌文件系統,由Silicon Graphics在1993年為IRIX操作系統開發。2000年5月,以GNU通用公共許可證發布這套文件系統的源代碼,之後被移植到Linu

深入理解MyBatis的原理配置

dynamic 如何 turn ready conf 屬性。 支持 left bool 前言:前文提到一個入門的demo,從這裏開始,會了解深入 MyBatis 的配置,本文講解 MyBatis 的配置文件的用法。 目錄 1、properties 元素 2、設置(set

深入理解MyBatis的原理配置用法

pac amt 單個 gis obb rri tab obj 用戶 前言:前文講解了 MyBatis 的配置文件一部分用法,本文將繼續講解 MyBatis 的配置文件的用法。 目錄 1、typeHandler 類型處理器 2、ObjectFactory 3、插件 4、e

微服務 SpringBoot 2.0配置解析

@override 書寫 string 接下來 code java interface sse als properties我用了好多年,你卻讓我用yml,這是什麽鬼 —— Java面試必修 引言 上一篇介紹了Spring Boot的輕松入門項目構建,對Spring B

18 | 散列表Word中的單詞拼寫檢查功能是如何實現的?

Word 這種文字編輯器你平時應該經常用吧,那你有沒有留意過它的拼寫檢查功能呢?一旦我們在 Word 裡輸入一個錯誤的英文單詞,它就會用標紅的方式提示“拼寫錯誤”。Word 的這個單詞拼寫檢查功能,雖然很小但卻非常實用。你有沒有想過,這個功能是如何實現的呢? 其

MFC框架介面開發介面

介紹 多文件介面中,一個主框架內可以有多個子框架。每個子框架可以看成是一個單文件的主框架。 例項 1.建立一個多文件程式,去掉文件/檢視框架支援; 2.新建一個檢視類,作為每個子框架視窗將要顯示的檢視: class CMainView:pu

[CSS]CSS浮動float詳解標準

Web網頁的製作,是一個流,必須自上而下依次進行。 標準文件流 流的比喻很形象,就像水流一樣,必須從上而下,像織毛衣一樣。 那麼究竟什麼是標準文件流呢?在web中,標準文件流有以下幾個特點: 高矮不齊,底邊對齊 自動換行 無論字型大小有多高,

ArcGISEngine二次開發5新增向量要素

通過在新建的窗體中的RadioButton來實現在MapControl上畫出向量圖形,用到介面有ICommand,ITool。 用到的方法有TrackPolyLine(),TrackPolygon(),MapToPoint(),三個方法建立向量要素,通過IEl

FFmpeg開發實戰FFmpeg 操作

打開 重命名 har ffmpeg else 刪除 ext %d 操作 FFmpeg 提供了豐富的API供我們使用,下面我們來講述一下文件操作相關的API: FFmpeg 刪除文件:avpriv_io_delete() FFmpeg 重命名文件:avpriv_io_mov

《Linux學習並不難》/目錄管理5 ls命令列出目錄和文信息

Linux ls 7.5 《Linux學習並不難》文件/目錄管理(5): ls命令列出目錄和文件信息使用ls命令,對於目錄而言將列出其中的所有子目錄與文件信息;對於文件而言將輸出其文件名以及所要求的其它信息。 命令語法:ls [選項] [目錄|文件]命令中各選項的含義如表所示。選項 選項含義

WAS集群系列5集群搭建步驟3安裝IHS軟

line col jsb eight none data 相關 blog mil 選擇“安裝IBM HTTPServer”選項,點擊“安裝向導”。例如以下圖提示: 安裝提示,逐步點擊“下一步”,當中偶有幾處細節註意就可以。列舉例如以下: (1)、產品安裝路徑與先

WebSphere V8.5 靜默安裝升級-使用響應靜默安裝軟生成相應,不安裝以及managesdk管理SDK

cep 檢查 linu 要點 pps erb platform uri 命令 使用響應文件靜默安裝軟件包(生成相應文件,不安裝):./IBMIM -record /response_files/install_product.xml -skipInstall skipIns

豹哥嵌入式講堂ARM Cortex-M開發之詳解8- 鏡像(.bin/.hex/.s19)

linker 未定義 公司 編輯器 ascii 輔助 oca ddr ext   大家好,我是豹哥,獵豹的豹,犀利哥的哥。今天豹哥給大家講的是嵌入式開發裏的image文件(.bin, .hex, .s19)。   今天這節課是豹哥《ARM Cortex-M開發之文件詳解》

初學C語言5逆序輸出片語 ,判斷迴

#include #include<assert.h> using namespace std; void reverse(char *pbegin, char *pend ) // 將一句話 片語逆序輸出 { char tmp = 0; while (pbegin < p

MongoDB資料庫關係表示和設計1巢狀和引用連結

使用資料的時候,一個數據項常常和另外的一個或多個數據項產生關係,比如一個“人”物件,有一個名字,可能有多個電話號碼,以及多個子女,等等。 在傳統的SQL資料庫中,關係被分為一個個表(table),在表中,每個資料項以主鍵(primary key)標識,而一個表的主鍵又