溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ElasticSearch中怎么實現(xiàn)數(shù)據(jù)自動冷熱分離

發(fā)布時間:2021-08-09 14:22:13 來源:億速云 閱讀:255 作者:Leah 欄目:大數(shù)據(jù)

這篇文章給大家介紹ElasticSearch中怎么實現(xiàn)數(shù)據(jù)自動冷熱分離,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

1. 節(jié)點tag

依次啟動三個節(jié)點,同時加入box_type和resource_level標(biāo)簽,box_type標(biāo)記node1、node2為warm節(jié)點,node3為hot節(jié)點,resource_level標(biāo)記機器資源的性能,分為高,中,低

bin/elasticsearch -d -p pid -E node.name=node1 -E node.max_local_storage_nodes=3 -E path.data=node1_data -E path.logs=node1_logs -E node.attr.box_type=warm -E node.attr.resource_level=high

bin/elasticsearch -d -p pid -E node.name=node2 -E node.max_local_storage_nodes=3 -E path.data=node2_data -E path.logs=node2_logs -E node.attr.box_type=warm -E node.attr.resource_level=mdeium

bin/elasticsearch -d -p pid -E node.name=node3 -E node.max_local_storage_nodes=3 -E path.data=node3_data -E path.logs=node3_logs -E node.attr.box_type=hot -E node.attr.resource_level=high


查看屬性:kibana中輸入以下命令
GET _cat/indices?v
得到以下結(jié)果,可以看到box_type和resource_level標(biāo)簽在每個節(jié)點的值
node  host      ip        attr              value
node3 127.0.0.1 127.0.0.1 ml.machine_memory 17179869184
node3 127.0.0.1 127.0.0.1 ml.max_open_jobs  20
node3 127.0.0.1 127.0.0.1 box_type          hot
node3 127.0.0.1 127.0.0.1 xpack.installed   true
node3 127.0.0.1 127.0.0.1 resource_level    high
node1 127.0.0.1 127.0.0.1 ml.machine_memory 17179869184
node1 127.0.0.1 127.0.0.1 box_type          warm
node1 127.0.0.1 127.0.0.1 xpack.installed   true
node1 127.0.0.1 127.0.0.1 ml.max_open_jobs  20
node1 127.0.0.1 127.0.0.1 resource_level    high
node2 127.0.0.1 127.0.0.1 ml.machine_memory 17179869184
node2 127.0.0.1 127.0.0.1 ml.max_open_jobs  20
node2 127.0.0.1 127.0.0.1 box_type          warm
node2 127.0.0.1 127.0.0.1 xpack.installed   true
node2 127.0.0.1 127.0.0.1 resource_level    mdeium

2. 建立索引

假設(shè)當(dāng)前時間為2019年9月1日,作為最新的數(shù)據(jù)存儲在hot節(jié)點上,只需要在建立索引時指定allocation策略即可

PUT api_log_2019-09-01
{
  "settings": {
    "number_of_shards": 3, 
    "number_of_replicas": 0, 
    "index.routing.allocation.require.box_type": "hot">

假設(shè)建立索引時沒有配置該選項也不要緊,動態(tài)修改即可

PUT api_log_2019-09-01/_settings
{
  "index.routing.allocation.require.box_type": "hot"
}

3. 遷移索引

遷移歷史索引到warm節(jié)點的方式也是采用動態(tài)修改請求的方式

PUT api_log_2019-09-01/_settings
{
    "index.routing.allocation.require.box_type": "warm",
    "index.routing.allocation.include.resource_level": "mdeium"
}

我們將api_log_2019-09-01遷移到了box_type為warm,resource_level為mdeium的節(jié)點,即node2

通過查詢索引分片的分布情況
GET _cat/shards/api_log_2019-09-01?v

結(jié)果如下:
index          shard prirep state   docs store ip        node
api_log_2019-09-01 1     p      STARTED 4711 4.1mb 127.0.0.1 node2
api_log_2019-09-01 2     p      STARTED 4656   4mb 127.0.0.1 node2
api_log_2019-09-01 0     p      STARTED 4707 4.1mb 127.0.0.1 node2

Rollover API

大家應(yīng)該也注意到了,遷移索引的步驟是手動完成的,有沒有更智能的方式呢,答案是肯定的,rollover API可以很好地實現(xiàn)這個功能

1. rollover

首先為索引建立別名, 由于多個index可以對應(yīng)一個alias,為了讓es知道往哪個索引中寫,標(biāo)記其中一個索引is_write_index為true,同時需要注意索引名以橫杠+數(shù)字結(jié)尾的形式命名,這是為了讓es自動生成索引

POST _aliases
{
  "actions": [
    {
      "remove": {
        "index": "api_log_2019-09-01",
        "alias": "api_logs",
        "is_write_index": true
      }
    }
  ]
}

rollover API會根據(jù)設(shè)置的條件(conditions)來生成新的索引

POST api_logs/_rollover
{
  "conditions": {
    "max_age": "1d",
    "max_docs": 10000,
    "max_size": "5gb"
  }
}

conditions的詳細(xì)解釋:

max_age:索引是否創(chuàng)建大于1天
max_docs:索引文檔數(shù)是否超過10000
max_size:索引大小是否超過5GB
max_size正在進(jìn)行中的合并會產(chǎn)生大量的臨時分片大小增長,而當(dāng)合并結(jié)束后這些增長會消失掉,不穩(wěn)定,max_age每個時間內(nèi)不一定均衡,max_docs比較合適
即以上三個條件滿足其一就會自動rollover

2. 新索引配置

rollover也支持索引的settings設(shè)置

POST api_logs/_rollover
{
  "conditions": {
    "max_age": "1d",
    "max_docs": 10000,
    "max_size": "5gb"
  },
  "settings": {
    "index.number_of_shards": 2
  }
}

3. 自定義索引名稱

生成的索引名稱為api_log_2019-09-000002, 以長度為6,序號+1,左填充0的格式命名,但es支持自定義名稱,只需要在_rollover端點加入名稱即可

POST api_logs/_rollover/api_log_2019-09-02
{...}

關(guān)于ElasticSearch中怎么實現(xiàn)數(shù)據(jù)自動冷熱分離就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI