當前位置:首頁 » 數據倉庫 » es資料庫實戰部署
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

es資料庫實戰部署

發布時間: 2023-06-11 00:40:51

① ES集群原理與搭建

查看集群健康狀況:URL+ /GET _cat/health

Cluster

代表一個集群,集群中有多個節點,其中有一個為主節點,這個主節點是可以通過選舉產生的,主從節點是對於集群內部來說的。es的一個概念就是去中心化,字面上理解就是無中心節點,這是對於集群外部來說的,因為從外部來看es集群,在邏輯上是個整體,你與任何一個節點的通信和與整個es集群通信是等價的。

Shards

代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節點上。構成分布式搜索。分片的數量只能在索引創建前指定,並且索引創建後不能更改。

replicas

代表索引副本,es可以設置多個索引的副本,副本的作用一是提高系統的容錯性,當某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。

Recovery

代表數據恢復或叫數據重新分布,es在有節點加入或退出時會根據機器的負載對索引分片進行重新分配,掛掉的節點重新啟動時也會進行數據恢復。

(2)、ES為什麼要實現集群

在單台ES伺服器節點上,隨著業務量的發展索引文件慢慢增多,會影響到效率和內存存儲問題等。

我們可以採用ES集群,將單個索引的分片到多個不同分布式物理機器上存儲,從而可以實現高可用、容錯性等。

ES集群中索引可能由多個分片構成,並且每個分片可以擁有多個副本。通過將一個單獨的索引分為多個分片,我們可以處理不能在一個單一的伺服器上面運行的大型索引,簡單的說就是索引的大小過大,導致效率問題。不能運行的原因可能是內存也可能是存儲。由於每個分片可以有多個副本,通過將副本分配到多個伺服器,可以提高查詢的負載能力。

(3)、ES是如何解決高並發

ES是一個分布式全文檢索框架,隱藏了復雜的處理機制,內部使用 分片機制、集群發現、分片負載均衡請求路由。

Shards 分片:代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節點上。構成分布式搜索。分片的數量只能在索引創建前指定,並且索引創建後不能更改。

Replicas分片:代表索引副本,es可以設置多個索引的副本,副本的作用一是提高系統的容錯性,當某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。

1、每個索引會被分成多個分片shards進行存儲,默認創建索引是分配5個分片進行存儲。每個分片都會分布式部署在多個不同的節點上進行部署,該分片成為primary shards。

注意:索引的主分片primary shards定義好後,後面不能做修改。

2、為了實現高可用數據的高可用,主分片可以有對應的備分片replics shards,replic shards分片承載了負責容錯、以及請求的負載均衡。

注意: 每一個主分片為了實現高可用,都會有自己對應的備分片,主分片對應的備分片不能存放同一台伺服器上。主分片primary shards可以和其他replics shards存放在同一個node節點上。

3、documnet routing(數據路由)

當客戶端發起創建document的時候,es需要確定這個document放在該index哪個shard上。這個過程就是數據路由。

路由演算法:shard = hash(routing) % number_of_primary_shards

如果number_of_primary_shards在查詢的時候取余發生的變化,無法獲取到該數據

注意:索引的主分片數量定義好後,不能被修改

高可用視圖分析(下圖所示:上面的圖,如果節點1與節點2宕機了,es集群數據就不完整了。下面圖,如果節點1與節點2宕機了,es集群數據還是完整的)

(1)、伺服器環境

准備三台伺服器集群

| 伺服器名稱 | IP地址 |
| node-1 | 192.168.212.182 |
| node-2 | 192.168.212.183 |
| node-3 | 192.168.212.184 |

(2)、關閉防火牆

(3)、**** http://192.168.212.185:9200/_cat/nodes?pretty

*號表示為master節點

注意:

注意克隆data文件會導致數據不同步

報該錯誤解決辦法 :

failed to send join request to master

因為克隆導致data文件也克隆呢,直接清除每台伺服器data文件。

資料庫中es索引技術是怎麼回事,哪位大神能否詳細給說問一下

首先,你的表肯定是做了外鍵等約束的,所以刪除,要從最外層刪除。假設你的資料庫是Sql Server的。
1、技能表
delete from 技能表 where 人物id in (select 人物id from 人物表 where 賬號id in (select 賬號id from 賬號表 where datediff(day,上次登錄時間lasttime,getdate())>=3))
2、裝備屬性表
delete from 裝備屬性表 where 裝備id in (select 裝備id from 裝備表 where 人物id in (select 人物id from 人物表 where 賬號id in (select 賬號id from 賬號表 where datediff(day,上次登錄時間lasttime,getdate())>=3)))
3、裝備表
delete from 裝備表 where 人物id in (select 人物id from 人物表 where 賬號id in (select 賬號id from 賬號表 where datediff(day,上次登錄時間lasttime,getdate())>=3))
4、人物表
delete from 人物表 where 賬號id in (select 賬號id from 賬號表 where datediff(day,上次登錄時間lasttime,getdate())>=3)
5、賬號表
delete from 賬號表 where datediff(day,上次登錄時間lasttime,getdate())>=3

③ ElasticSearch海量數據使用簡述

應用場景當中經常會遇到模糊查詢或多條件匹配查詢,數據量較小的情況下通過簡單的資料庫模糊查詢是可以解決的,但是對於數據量龐大的情況,資料庫模糊查詢就會出現性能問題。這種情況下的一種解決方案就是根據查詢內容構建反向索引,藉助搜索引擎進行查詢,提升查詢性能。

目前使用比較多的分布式搜索引擎是ElasticSearch。那麼項目中如何使用ES?如何保證ES的數據更新?下面簡單做個吵磨戚描述。

Elasticsearch使用可以簡單分為兩個階段。數據初始化階段、數據更新階段。

數據初始化階段。數據初始化常見的方式如下:

一、通過應用程序手動將資料庫中的數據,調用ES介面API插入ES索引庫中。

二、同過數據遷移工具將數據初始化到ES資料庫。目前常用的ES同步工具有logstash-input-jdbc、DataX。通過同步遷移工具可以全量將資料庫數據初始化到ES索引庫中。

數據更新階段。數據更新階段常見的處理方式如下:

一、通過應用服務直接調用ES更新介面。這種方式實現比較簡單但是對業務侵入性比較大。

二、對於實時性要求不高的可以採用定時任務監控數據表變化然後調用ES介面實現數據更新。

三、業務應用中通過發送消息非同步更新數據。

四、通過DataX同步工具定時將修改的數據同步到ES庫中。

上述是ElasticSearch使用的簡升陵單描述。使用的關鍵還是資料庫與ES間的數據同游手步。能否用的好關鍵也是數據間的同步。