ElasticSearch快速入門

2022-08-21 15:18:10 字數 2571 閱讀 7129

一.前言

上週公司在做乙個模組功能的時候 因為最後的結果資料量遠遠超過了預想的資料量  最後不得不把mysql換成elastic search,以前在學校的時候也沒有1接觸到這些東西 剛好這段時間處於專案空檔期 所以剛好趁機學習一下

二.介紹

elasticsearch是乙個分布式的restful風格的搜尋和資料分析殷勤

restful(一組架構約束條件和原則)

特點:1.每乙個url代表一種資源;

2.客戶端使用get,post,put,delete4個操作方式的動詞對服務端資源進行操作;get用來獲取資源;post用來新建資源(也可以用來更新資源);put用來更新資源,delete用來刪除資源;

3.通過操作資源的表現形式來操作資源

4.資源的表現形式是xml或者html

5.客戶端與服務端之間的互動在請求之間是無狀態的,從客戶端到服務端的每個請求都必須包含理解請求所必須的資訊。

言歸正傳,下面說一下elaticsearch的特點

查詢:elasticsearch允許執行和合併多種型別的搜尋 結構化 非結構化 地理位置 度量指標 搜尋方式隨心而變

分析:找到與查詢最匹配的十個文件是一回事 並且聚合可以讓你從大處著眼,探索資料的趨勢和模式

速度:很快 自己意會

可擴充套件性:可以在膝上型電腦上執行 也可以在承載了pb級(1pb等於1024tb)資料的很多臺伺服器上執行;

彈性:elasticsearch執行在乙個分布式環境中

靈活性:具備多個案例場景 數字 文字 地理位置 結構化 非結構化 

三 說在前面

elasticsearch是乙個高度可伸縮的開源全文搜尋和分析引擎 ,允許您快速的接近實時的儲存,搜尋和分析大量資料 它是乙個近乎實時的搜尋平台 這意味著從索引文件到可以搜尋的時間只有輕微的延遲(通常只有1s)

cluster:

集群是乙個或多個節點(伺服器)的集合,他們共同儲存你的整個資料,並提供跨所有節點的聯合索引和搜尋功能。乙個集群由乙個唯一的名稱標識,預設這個唯一標識的名稱是『elasticsearch』。這個名稱比較重要 因為如果節點被設定為按其名稱加入集群,那麼節點只能是集群的一部分。

確保不要在不同的環境中用相同的集群名稱。否則可能導致節點加入到錯誤的集群中。可以使用不同的關鍵字來分別用於開發,測試,和正式集群的名字

node:

節點是乙個單獨的伺服器,她是集群的一部分,儲存資料,並參與集群的搜尋和索引功能,節點也是由名稱標識的 在預設的情況下 該名稱是在 啟動時分配給節點的隨機通用唯一識別符號(uuid) 但如果不想使用預設的節點名 可以定義到任何想要的節點名 但是這個名稱一定是要具備足夠的辨識度 便於你識別 網路中的哪些伺服器對應於你elasticsearch的集群中的哪些節點

乙個節點可以通過 配置集群名稱 來加入到乙個特定的集群中 預設情況下 每個節點都被設定加入到乙個名字叫'elastic search'的集群中 這就意味著如果你啟動了很多個節點 並且假設他們彼此可以互相發現 那麼他們將自動形成 並加入乙個名為 elasticsearch 的集群中

乙個集群中可以有任意數量的節點 當當前網路沒有執行任意乙個節點的時候 此時啟動乙個節點將預設形成乙個單節點的名字叫做『elasticsearch的集群

index:

索引是具有某種相似特徵的文件的集合 例如 你可以有乙個顧客資料索引 產品目錄索引和訂單資料索引 索引有乙個名稱 (必須是小寫)標識 ,該名稱用於 在對其其中的文件 執行索引 搜尋 更新 和刪除操作 時引用索引

document:

文件是可以被索引的基本資訊單元 文件用json表示

shards & replicas

乙個索引可能儲存大量資料 這些資料可以超過 單個節點的硬體限制 例如 乙個包含10億條文件占用1tb磁碟空間的索引可能不適合在單個節點上 或者可能太慢而不能單獨處理 來自單個節點的搜尋請求

為了解決這個問題 elasticsearch 提供了 將你的索引細分為多個碎片(或者叫分片)的能力 在建立索引時 可以簡單的定義所需要的分片數量 每個分片本身就是乙個功能完全獨立的索引 可以駐留在集群的任何節點上

分片為什麼重要?

1.他允許你水平的分割/拓展內容卷

2.他允許你跨分片(可能在多個節點上)分布和並行操作 從而提高效能和吞吐量

在乙個網路/雲環境中隨時都有可能出現故障 推薦有乙個融災機制 es允許你將 乙個或多個索引 複製到其他地方 這被稱之為副本 

複製之所以重要 有兩個原因

1.他提供了 放在乙個shade/node失敗時的高可用性,出於這個原因,很重要的乙個點是 乙個副本從來不會分配到與他複製的原始分片相同節點中 也就是說 副本是放在另外的節點上的

2.他允許拓展搜尋量/吞吐量,因為搜尋可以在所有的副本上並行執行

總而言之 每個索引都可以被分割成很多分片 索引也可以被複製零(意味著沒有副本)或更多次,一旦被複製 每個索引都將具有主分片(被複製的原始分片)和副本分片(主分割槽的副本),在建立索引時 可以給每個索引 定義分片 和 副本的數量 。建立索引時 你可以動態 地更改副本的數量 但不能更改事後分片的數量

在預設情況下 elasticsearch中的每個索引 都分配了5個主分片 和 1個副本 這意味著如果集群中至少有兩個節點 那麼索引將有5個主分片和另外5個副本分片(這5個人副本分片組成1個完整副本)每個索引總共有10個分片

Elasticsearch快速入門

mysql estable index type rowdocument column field schema sqldsl 乙個es集群由乙個或多個節點 node 組成,每個集群都有乙個cluster name作為標識。乙個es例項就是乙個 node,乙個機器可以有多個例項,所以並不能說一台機器...

Elastic Search快速上手(3) 搜尋

儲存好資料之後,便可通過restful api進行搜尋。詳細文件可參考 簡單搜尋 深入搜尋 注 對前文的乙個補充,可以使用analyze來檢視分詞器的分詞結果。get analyze 分詞結果 搜尋使用get方式,get請求的路徑中,可以包含目標索引 型別和文件 id。search 在所有的索引中搜...

Elasticsearch學習之快速入門案例

1.document資料格式 面向文件的搜尋分析引擎 1 應用系統的資料結構都是物件導向的,複雜的 2 物件資料儲存到資料庫中,只能拆解開來,變為扁平的多張表,每次查詢的時候還得還原回物件格式,相當麻煩 3 es是面向文件的,文件中儲存的資料結構,與物件導向的資料結構是一樣的,基於這種文件資料結構,...