1. 程式人生 > >ElasticSearch讀流程

ElasticSearch讀流程

基於版本:2.3.2
這次分析的讀流程指 GET/MGET 過程,不包含搜尋過程。

GET/MGET 必須指定三元組: index type id。 type 可以使用 _all 表示從所有 type 獲取第一個匹配 id 的 doc。
mget 時, type 留空表示 _all,例如可以這樣:

123GET/website/_mget

GET 則必須明確指定 _all ,例如必須這樣:

1 2 3 GET/website/blog/1

而不能

123GET/website
/1

GET 流程

整體分為五個階段:準備叢集資訊,內容路由,協調請求,資料讀取,回覆客戶端。

在處理入口,根據action字串獲取對應的TransportAction實現類,對於一個單個doc的get請求,獲取到的是一個

1 2 3 TransportSingleShardAction TransportAction<Request,Response>transportAction=actions.get(action);

一個 TransportSingleShardAction 物件用來處理存在於一個單個主分片或者副本分片上的讀請求。

準備叢集資訊

1.在 TransportSingleShardAction 建構函式中,已準備好 clusterState、nodes 列表等資訊

2.resolveRequest函式從ClusterState中獲取IndexMetaData,更新可能存在的自定義routing資訊

內容路由
確定目標節點,獲取shard迭代器,其中包含了目的node資訊

12345678910111213privateAsyncSingleAction(Request request,ActionListener<Response>listener){ClusterState
clusterState=clusterService.state();​      //叢集nodes列表            nodes=clusterState.nodes();resolveRequest(clusterState,internalRequest);//根據hash和shard數量取餘計算一個隨機目的shard,或者走優先順序規則this.shardIt=shards(clusterState,internalRequest);}

作協調請求,向目標節點發送請求,處理響應,回覆客戶端,主要程式碼如下 :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 privatevoidperform(@Nullable finalThrowable currentFailure){ DiscoveryNode node=nodes.get(shardRouting.currentNodeId()); if(node==null){ onFailure(shardRouting,newNoShardAvailableActionException(shardRouting.shardId())); }else{ internalRequest.request().internalShardId=shardRouting.shardId();

相關推薦

ElasticSearch流程

基於版本:2.3.2 這次分析的讀流程指 GET/MGET 過程,不包含搜尋過程。 GET/MGET 必須指定三元組: index type id。 type 可以使用 _all 表示從所有 type 獲取第一個匹配 id 的 doc。 mget 時

淺談HDFS的流程

tps otto 如果 rmp dfs margin 驗證 https class 1、使用HDFS提供的客戶端Client,向遠程的Namenode發起RPC請求;2、Namenode會視情況返回文件的部分或者全部block列表,對於每個block,Namenode都會返

hdfs流程

先來一張圖展示hdfs讀流程  hsdf -dfs  -ls / 1.client端通過FileSystem.open(path)方法,和namenode通過rpc進行通訊,namenode校驗路徑是否存在,使用者是否有許可權 2.驗證完成後,返回檔案的部分或者全部

大資料開發之Hadoop篇----hdfs流程

讀流程所涉及到的有client,NameNode和DataNode這個三個,我們來了解下這三個之間在讀流程裡都是幹什麼的。 1,當我們輸入一條讀入資料的命令的時候,如:hdfs dfs -ls /  或者 hdfs dfs -cat /user/hadoop/xxx時,client就通

MapReduce架構,shuffle,mapred,hdfs流程

MapReduce執行模式如下 主要分為map,reduce,shuffle幾個步驟: map相當於給資料作用一個規則,取得作用規則後資料的對映,例如: Map() 對映 a xyz -> (x,1)(y,1)(z,1) 對映成key,value的形式 b x

Elasticsearch——寫文件

目錄 1.介紹 故障處理 故障處理 5.故障 1.介紹 Elasticsearch中的每一個索引都會被切片然後每一個切片都會有多份複製。 這些複製被稱作複製組,並且當文件被新增或移除時,複製組中的複製必須保證同步。 如果做不到這一點,從

ElasticSearch使用流程

建立索引物件 — 建立對映 — 儲存資料【文件】 — 指定文件型別進行搜尋數 據【文件】 建立索引及對映:— 基於 spring data elasticsearch 註解 在使用 spring data elasticsearch 開發,

Hadoop 檔案流程

1)流程圖    2)流程解讀    1. 客戶端執行命令(或者程式碼讀取),呼叫的是dfs的FileSystem.open的方法,open傳的是檔案路徑     2. 根據檔案路徑去NN找,NN把block塊和所在位置的資訊的對映關係,返回給一個FSDataInoputSt

[IO系統]08 IO流程分析

       本文從整體來分析快取IO的控制流和資料流,並基於IO系統圖來解析讀IO: 注:對上述層次圖的理解參見文章《[IO系統]01 IO子系統》       一步一步往前走。(核心程式碼版本4.5.4)1.1使用者態       程式的最終目的是要把資料寫到磁碟上,如前

【若澤大資料實戰第十二天】HDFS課程 流程-寫流程

前言:     上期課程J哥給我們講了很多有關於HDFS內部的namenode,datanode,secondary的各種分析,下面的課程涉及到了讀流程和寫流程。我也將詳細的梳理清楚。HDFS寫流程1.檔案寫流程 --> FSDataOutputStream (面試題)

hadoop 流程和寫流程

hadoop HDFD讀流程 hadoop HDFD寫流程 package com.lhj.hadoop; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt

ElasticSearch寫原理

內存緩存 自己的 內存數據 Language ref elastic 緩沖 除了 itl es 寫入數據的工作原理是什麽啊?es 查詢數據的工作原理是什麽啊?底層的 lucene 介紹一下唄?倒排索引了解嗎? es 寫數據過程 客戶端選擇一個 no

好程式設計師大資料學習路線分享HDFS流程

1.客戶端或者使用者通過呼叫FileSystem物件的Open()方法開啟需要讀取的檔案,這時就是HDSF分散式系統所獲取的一個物

ElasticSearch寫一致性問題

ES寫過程     1.ES會將document傳送給coordinate node,節點根據docume

構建之法 第五章:團隊和流程

min 這樣的 程序員 希望 成員 eat 貢獻 核心 不能 團隊有一致的集體目標,團隊要一起完成這目標。一個團隊的成員不一定要同時工作,例如接力賽跑。 團隊成員有各自的分工,互相依賴合作,共同完成任務。 軟件團隊有各種形式,適用於不同的人員和需求。基於直覺形成的團隊模式未

剖析Elasticsearch集群系列第一篇 Elasticsearch的存儲模型和寫操作

推薦 arch 變更 git 排序。 _id 包含 doc 現在 剖析Elasticsearch集群系列涵蓋了當今最流行的分布式搜索引擎Elasticsearch的底層架構和原型實例。 本文是這個系列的第一篇,在本文中,我們將討論的Elasticsearch的底層存儲模型及

elasticsearch 冷熱數據的寫分離

prop 掛載 res arc ima 支持 enable hot ear 步驟 一、冷熱分離集群配置 比如三個機器共六個node的es集群。 每個機器上各掛載一個ssd 和 一個sata。每個機器需要啟動兩個es進程、每個進程對應不同類型的磁盤。 關鍵配置: node

HDFS文件流程簡單圖解

http pla ges jpg eight 簡單 系統 mage pan 在活動反思文件系統中 HDFS文件讀寫流程簡單圖解

《Go並發編程實戰》第4章 流程控制方式

go並發編程實戰 說實話,該書前面講的枯燥冗長,看的有點打瞌睡,而我自己又是有一個有強迫癥的人,喜歡一個字一個字地摳,最終結果是一看就困,然後轉天再看再困,依次循環......。 這就總會讓我自己有點遐想,自己也寫一本關於Go的書算了,但因為平時真的太忙了,稍有時間時又貢獻給我女兒。我

hbase流程

ems 服務 region flush 以及 hba 表數據 new 剛才 HBase讀數據流程 1) HRegionServer保存著meta表以及表數據,要訪問表數據,首先Client先去訪問zookeeper,從zookeeper裏面獲取meta表所在的位置信息,即找