elasticsearch 基本概念

2022-03-21 01:57:54 字數 2086 閱讀 1850

elasticsearch是乙個nrt平台。這意味著當你索引乙個檔案時,在細微的延遲(通常1s)之後,該檔案才能被搜尋到。

cluster是在所有節點中儲存全部資料且提供聯合索引和搜尋功能的乙個或多個節點(伺服器)的集合。

每個cluster有唯一的名稱,預設為」elasticsearch」。該名稱很重要,因為如果節點通過cluster名稱加入cluster,那麼該節點就只能成為該cluster的一部分。確保在不同環境中不重複使用相同的cluster名稱,除非節點加入了錯誤的cluster。

舉例,對development、stage和production集群分別使用logging-dev、logging-stage和logging-prod。

注意,cluster可以只配置乙個節點。而且,你可能也會有多個獨立的clusters,每個cluster都有它自己的唯一的名稱。

指定cluster名稱命令

./elasticsearch -- cluster.name my_cluster_name

乙個node是乙個server,是cluster的一部分,它儲存資料且參與cluster的索引和查詢功能。和cluster一樣,每個節點都有自己的名稱,預設在啟動時賦予乙個隨機的人名。如果你不想要預設的名稱,可以自定義名稱。該名稱對cluster管理很有用,特別是當你想確認哪個server對應哪個節點時。

乙個node可以配置指定cluster名稱加入該cluster。預設,每個節點加入名為」elasticsearch」的cluster。 

乙個cluster可以包含任意數量的node。而且,如果沒有其他node執行,啟動乙個node會預設形成乙個單節點cluster,名為」elasticsearch」。

指定node名稱命令

./elasticsearch--node.namemy_node_name

index是具有相似特徵的文件集合。例如,你可以有顧客資料的index、商品種類的index和訂單資料的index。 

每個index都有唯一的名稱(必須小寫),當執行索引、搜尋、更新和刪除操作時都需要根據該名稱找到對應的index。

乙個cluster可以包含任意數量的index。 

在乙個index中,可以定義乙個或多個type。type是index的邏輯分類。

document是索引的基本單元資訊。舉例,你有乙個客戶的document、乙個商品的document和乙個訂單的document。該document用json表示。

乙個index/type中,可以包含任意多的document。注意,雖然document物理上存在index中,document實際上必須被分配到index中的type上。 

乙個index可以儲存數量超出硬體限制的資料。舉例,乙個index包含10億文件,佔據1tb硬碟空間,就會導致無法放在單個節點硬碟上或者響應request太慢。

為了解決這個問題,elasticsearch提供了將索引分片的技術,稱為shard。當建立乙個index,可以指定shard的數量。每個shard內部都是全功能而且相互獨立的」index」,可以放在cluster上的任意node上。

sharding重要的原因:

分片是如何分布、文件是如何聚合回搜尋結果的機制完全由elasticsearch管理,對使用者透明。

在網路/雲環境中,故障是很常見的,比如乙個shard/node宕了,因而容錯機制非常有效,也是被推薦的。為此,elasticsearch允許建立index的shard的乙個或多個副本,稱為replica。

replication重要的原因:

總結一下,每個index可以被分為多個shard。乙個index也可以被複製0份或者多份。一旦複製過,每個index將有主shard(建立副本的原本所在的shard)和replica shard(主shard的副本)。shard和replica的數量可以在index建立的時候自定義。index建立之後,你可以動態改變replica的數量,但是不能改變shard的數量。

預設的,每個index被分配5個主shard和1個replica,這意味著,如果你在cluster中有至少兩個節點,每個index將有10個shard,分別是5個主shard和另外5個replica shard(1個完整的replica)。

Elasticsearch 基本操作

mget elasticsearch中檢索多個文件,相對於乙個乙個的檢索,更快的方式是在乙個請求中使用multi get或者 mget api。具體應用如下 mget api引數是乙個 docs 陣列,陣列的每個節點定義乙個文件的 index type id 元資料。如果你只想檢索乙個或幾 個確定的...

elasticsearch基本操作

get search 建立索引 指定分片和副本 put lib 建立索引 put lib2 檢視索引的配置 get lib settings get lib2 settings get all settings 新增文件put方式指定id put lib user 1 新增文件,不指定id用post...

Elasticsearch 基本操作

乙個批量匯入elasticsearch 的demo 機器少的話,分片數最好是你的data節點的機器數倍數,這樣請求負載能夠均攤到每個機器上,如果機器比較多,最好保證分片數不要太多,比如最好別超過20 30個,然後根據你的資料量評估一下,盡量保證每個分片在15到20g吧 資料 vi request.j...