小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

干貨 | Elasticsearch 可搜索快照深入詳解

 銘毅天下 2021-12-24

0、可搜索快照認(rèn)知前提

Elasticsearch 可搜索快照是 7.10 版本才有的新功能,之前呼聲非常高。

Elastic 官方網(wǎng)站用一整頁(yè)面介紹,可見(jiàn)對(duì)該功能的重視。

https://www./cn/elasticsearch/elasticsearch-searchable-snapshots

但,有個(gè)細(xì)節(jié)要跟大家強(qiáng)調(diào):該功能是企業(yè)版本才有的收費(fèi)功能,黃金版、白金版、基礎(chǔ)免費(fèi)開(kāi)源版本都不具備該功能。

本文的相關(guān)實(shí)戰(zhàn)驗(yàn)證,是基于 30 天試用版本做的驗(yàn)證。

1、什么是可搜索快照?

講可搜索快照的定義前,先說(shuō)一下大數(shù)據(jù)的存儲(chǔ)。

對(duì)于小微企業(yè)來(lái)講,硬件成本是產(chǎn)品、項(xiàng)目環(huán)節(jié)非常重要的考量因素。數(shù)據(jù)量的激增和項(xiàng)目的經(jīng)費(fèi)之間本來(lái)就是相生相克、相愛(ài)相殺的關(guān)系。

一方面:老板要控制成本的前提下滿(mǎn)足甲方的功能需求、性能需求且追求利潤(rùn)最大化。

另一方面:開(kāi)發(fā)人員為滿(mǎn)足性能指標(biāo)最大程度的優(yōu)化,多少會(huì)涉及提升硬件資源配置的需求,比如:換 SSD 磁盤(pán)、加內(nèi)存或更換CPU。

  • 老板會(huì)說(shuō):經(jīng)費(fèi)有限,給老子優(yōu)化性能,盡一切可能滿(mǎn)足甲方的需求。

  • 開(kāi)發(fā)人員心里暗自嘀咕:不給老子提升資源配置,我優(yōu)化個(gè)毛線(xiàn)。

當(dāng)聽(tīng)說(shuō)字節(jié)跳動(dòng)線(xiàn)上環(huán)境:最小 256 GB內(nèi)存,多數(shù)都是 1TB 內(nèi)存的時(shí)候,除了羨慕還是羨慕。

然后,說(shuō)一下用戶(hù)的關(guān)注點(diǎn)。

拿大數(shù)據(jù)輿情場(chǎng)景,當(dāng)前(此刻為:20210731)用戶(hù)關(guān)注的肯定是時(shí)下最熱新聞數(shù)據(jù):奧運(yùn)會(huì)。一年前的熱點(diǎn):“馬老師,很快啊,不講武德等”即便當(dāng)時(shí)家喻戶(hù)曉、婦孺皆知,現(xiàn)在看早已“打入冷宮”、“灰飛煙滅”,沒(méi)有了任何熱度可言。

  • 熱數(shù)據(jù)——更多用戶(hù)關(guān)注的熱點(diǎn)數(shù)據(jù)。

  • 冷數(shù)據(jù)——6個(gè)月或1年前(時(shí)間自己界定)的熱點(diǎn)數(shù)據(jù)。

熱數(shù)據(jù)、冷數(shù)據(jù)都要保存怎么辦?

一方面:要有足夠的磁盤(pán)資源,數(shù)百TB甚至PB級(jí)別磁盤(pán)。只有超大規(guī)模的企業(yè)才有如此財(cái)力和資源。

另一方面:劃分冷熱集群架構(gòu),讓高配硬件資源(如:SSD磁盤(pán))用到刀刃(如:熱點(diǎn)數(shù)據(jù))上,冷數(shù)據(jù)或者低頻數(shù)據(jù)考慮存儲(chǔ)到:NFS 磁盤(pán)陣列或者云廠(chǎng)商的OSS。

快照:是繼副本后保證集群數(shù)據(jù)高可用的利器。一般高可用的場(chǎng)景:除了副本至少設(shè)置為1,還要定期設(shè)置增量快照 snapshot。

設(shè)置快照的好處就在于:當(dāng)集群故障時(shí),即便數(shù)據(jù)丟失,也能通過(guò)快照的方式及時(shí)恢復(fù)。

我們?cè)谔摂M機(jī)集群 VSphere 中鼓弄虛擬機(jī),一般都在適當(dāng)?shù)臅r(shí)機(jī)設(shè)置快照,這和 Elasticsearch 的增量快照是一樣的道理。

線(xiàn)上環(huán)境不出問(wèn)題一般都相安無(wú)事,一般出現(xiàn)問(wèn)題多半都和數(shù)據(jù)有關(guān)系,有了快照至少多了一份保障,運(yùn)維人員會(huì)多一份心安。

但是,早期的快照就是“死數(shù)據(jù)”,是不支持搜索的,但這種使用頻次非常低的數(shù)據(jù)也是有搜索需求的。

傳統(tǒng)做法可能是:將很久之前的“冷”數(shù)據(jù)以快照方式存儲(chǔ)(副本設(shè)置為0,節(jié)約存儲(chǔ)),當(dāng)需要檢索的時(shí)候,再由快照恢復(fù)到索引,實(shí)現(xiàn)檢索。

勢(shì)必,這會(huì)有較長(zhǎng)的時(shí)間成本。

可搜索快照就在此大背景下應(yīng)運(yùn)而生的。

可搜索快照是指使用快照以極具成本效益的方式搜索不常訪(fǎng)問(wèn)的只讀數(shù)據(jù)。冷數(shù)據(jù)層和凍結(jié)數(shù)據(jù)層( cold and frozen data tiers )使用可搜索的快照來(lái)降低存儲(chǔ)和運(yùn)營(yíng)成本。

可搜索快照消除了對(duì)副本分片的需求(副本默認(rèn)設(shè)置為0),會(huì)將搜索數(shù)據(jù)所需的本地存儲(chǔ)減半??伤阉骺煺找蕾?lài)于已用于備份的相同快照機(jī)制,并保障對(duì)快照存儲(chǔ)庫(kù)存儲(chǔ)成本的影響最小。

關(guān)于快照,如果您感覺(jué)不大熟悉或者沒(méi)有用過(guò),推薦閱讀:

干貨 | Elasitcsearch7.X集群/索引備份與恢復(fù)實(shí)戰(zhàn)

2、可搜索快照適用場(chǎng)景

可搜索快照非常適合管理大量歷史歸檔數(shù)據(jù)。

歷史信息的搜索頻率通常低于最近的數(shù)據(jù),因此可能不需要副本以獲得性能優(yōu)勢(shì)。

對(duì)于更復(fù)雜或耗時(shí)的搜索,你可以將異步搜索與可搜索快照結(jié)合使用。

異步搜索推薦:

https://www./guide/en/elasticsearch/reference/current/async-search.html

3、可搜索快照的特點(diǎn)

以下三條內(nèi)容來(lái)自官網(wǎng)文檔,為了保證原汁原味,我沒(méi)有任何刪減。3.1、3.2、3.3 要連起來(lái)讀完才能更好的理解可搜索快照的設(shè)計(jì)初衷和特點(diǎn)。

https://www./cn/elasticsearch/elasticsearch-searchable-snapshots

3.1 平衡存儲(chǔ)成本

時(shí)序數(shù)據(jù)以指數(shù)速度增長(zhǎng)。而且,隨著數(shù)據(jù)對(duì)您的業(yè)務(wù)和運(yùn)營(yíng)方式的影響越來(lái)越大,存儲(chǔ)和搜索所有數(shù)據(jù)的成本可能會(huì)非常高。

數(shù)據(jù)層是一種集成的自動(dòng)化數(shù)據(jù)生命周期管理方法,它可以幫助您平衡存儲(chǔ)成本。

3.2 管理數(shù)據(jù)生命周期

Elasticsearch 中的重要數(shù)據(jù)存儲(chǔ)在熱層中,用于快速搜索查詢(xún)。隨著數(shù)據(jù)越來(lái)越舊,它們變得不再重要,并且搜索的頻率也降低了,這些數(shù)據(jù)會(huì)被移動(dòng)到由較低成本、較低性能的計(jì)算和存儲(chǔ)節(jié)點(diǎn)組成的溫層。

'’當(dāng)數(shù)據(jù)變得不太重要且為只讀時(shí),會(huì)以快照形式將它們存儲(chǔ)在對(duì)象存儲(chǔ)(如 S3)中。但是,要搜索這類(lèi)數(shù)據(jù),需要進(jìn)行恢復(fù),無(wú)法立即進(jìn)行搜索。

3.3 跳過(guò)手動(dòng)恢復(fù)

引入可搜索快照這一功能為 S3 和其他對(duì)象存儲(chǔ)帶來(lái)全新的生命力:允許您直接搜索存儲(chǔ)在快照中的數(shù)據(jù)。

在冷層利用可搜索快照,您可以進(jìn)一步降低多達(dá)一半的存儲(chǔ)成本,同時(shí)兼顧搜索性能。

這是通過(guò)將用于獲得彈性的數(shù)據(jù)與用于搜索的數(shù)據(jù)分開(kāi)存儲(chǔ)來(lái)實(shí)現(xiàn)的,從而使您能夠平衡存儲(chǔ)成本和性能以滿(mǎn)足您的需求。

4、可搜索快照實(shí)戰(zhàn)

介紹兩種實(shí)現(xiàn)方式:手動(dòng)掛載快照、ILM(索引生命周期管理)可搜索快照。

手動(dòng)是基礎(chǔ),理解了手動(dòng),再理解 ILM 自動(dòng)管理可搜索快照會(huì)很容易。

4.1 手動(dòng)掛載快照

4.1.1 步驟1:配置快照存儲(chǔ)路徑及注冊(cè)快照存儲(chǔ)庫(kù)

在elasticsearch中添加如下配置:

"path.repo: "/www/elasticsearch_0713/elasticsearch-7.13.0/backup"

注冊(cè)快照存儲(chǔ)庫(kù)(即設(shè)置存儲(chǔ)路徑)

PUT /_snapshot/my_repository
{
  "type""fs",
  "settings": {
    "location""/www/elasticsearch_0713/elasticsearch-7.13.0/backup"
  }
}

4.1.2 步驟2:為指定索引創(chuàng)建/拍攝快照

PUT my_docs/_doc/1
{
  "title""just testing"
}

PUT /_snapshot/my_repository/snapshot_docs_index?wait_for_completion=true
{
  "indices""my_docs",
  "ignore_unavailable"true,
  "include_global_state"false
}

前兩步中規(guī)中矩,都是之前創(chuàng)建非可搜索快照的套路。

也就是說(shuō):在沒(méi)有可搜索快照之前,要?jiǎng)?chuàng)建快照也得這么干。

4.1.3 步驟3:將快照掛載為可搜索的快照索引

這一步我們之前沒(méi)有見(jiàn)過(guò),這一步就是可搜索快照最為核心的地方。

重中之重:要搜索快照,必須首先將其作為索引掛載到本地。

通常 ILM 會(huì)自動(dòng)執(zhí)行此操作,手動(dòng)創(chuàng)建可搜索快照需要自己調(diào)用掛載快照 API(這點(diǎn)很重要,后面還會(huì)強(qiáng)調(diào)一次)。

POST /_snapshot/my_repository/snapshot_docs_index/_mount?wait_for_completion=true
{
  "index""my_docs"
  "renamed_index""docs"
  "index_settings": { 
    "index.number_of_replicas": 0
  },
  "ignored_index_settings": [ "index.refresh_interval" ] 
}

挨個(gè)參數(shù)解讀一下:

  • index:必須設(shè)置,要掛載數(shù)據(jù)的快照中包含的索引的名稱(chēng)。如果renamed_index不設(shè)置,該 index 將用以創(chuàng)建新索引。
  • renamed_index: 可選,將創(chuàng)建的索引的名稱(chēng)。
  • index_settings: 掛載時(shí)應(yīng)添加到索引中的設(shè)置。
  • ingored_index_settings:掛載時(shí)應(yīng)從索引中刪除的設(shè)置。

執(zhí)行結(jié)束,結(jié)果如下:

{
  "snapshot" : {
    "snapshot" : "snapshot_docs_index",
    "indices" : [
      "docs"
    ],
    "shards" : {
      "total" : 1,
      "failed" : 0,
      "successful" : 1
    }
  }
}

這里的 my_docs 是快照里面的索引,不是外層的索引,也就是說(shuō):把 my_docs 索引(非快照里)刪除,上面的掛載操作照樣可以運(yùn)行。

4.1.4 步驟4:掛載完畢后,執(zhí)行快照搜索

被掛載后的索引是:docs??梢阅盟推胀ㄋ饕粯邮褂?,執(zhí)行檢索操作即可。
GET docs/_search

4.2 基于 ILM 索引生命周期管理實(shí)現(xiàn)自動(dòng)掛載快照

以下實(shí)戰(zhàn)演練基于3節(jié)點(diǎn) 7.13.0 版本集群。

參見(jiàn):https://www./guide/en/elasticsearch/reference/7.x/ilm-searchable-snapshot.html

4.2.1 步驟1:注冊(cè)快照存儲(chǔ)庫(kù)(即設(shè)置存儲(chǔ)路徑)

如下:在elasticsearch.yml 文件中配置。


"path.repo: "/home/elasticsearch/elasticsearch-7.13.0/backup"
PUT /_snapshot/my_repository
{
  "type""fs",
  "settings": {
    "location""/home/elasticsearch/elasticsearch-7.13.0/backup"
  }
}

4.2.2 步驟2:設(shè)置ilm policy

測(cè)試需要,刷新值調(diào)的很小,實(shí)戰(zhàn)環(huán)境以需求為準(zhǔn)。
PUT _cluster/settings
{
  "persistent": {
    "indices.lifecycle.poll_interval""1s"
  }
}

# cold 階段設(shè)置可搜索快照
PUT _ilm/policy/my_custom_policy_filter
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_age""3d",
            "max_docs": 5,
            "max_size""50gb"
          },
          "set_priority": {
            "priority": 100
          }
        }
      },
      "warm": {
        "min_age""15s",
        "actions": {
          "forcemerge": {
            "max_num_segments": 1
          },
          "allocate": {
            "require": {
              "box_type""warm"
            },
            "number_of_replicas": 0
          },
          "set_priority": {
            "priority": 50
          }
        }
      },
      "cold": {
        "min_age""20s",
        "actions": {
          "allocate": {
            "require": {
              "box_type""cold"
            },
            "number_of_replicas": 0
          },
          "searchable_snapshot": {
            "snapshot_repository""my_repository"
          }
        }
      }
    }
  }
}

4.2.3 步驟3:創(chuàng)建模板,關(guān)聯(lián)配置的ilm_policy


PUT _index_template/timeseries_template
{
  "index_patterns": ["timeseries-*"],                 
  "template": {
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 0,
      "index.lifecycle.name""my_custom_policy_filter",      
      "index.lifecycle.rollover_alias""timeseries",
      "index.routing.allocation.require.box_type""hot"
    }
  }
}

4.2.4 步驟4:創(chuàng)建起始索引(便于滾動(dòng))

PUT timeseries-000001
{
  "aliases": {
    "timeseries": {
      "is_write_index"true
    }
  }
}

4.2.5:批量插入數(shù)據(jù),驗(yàn)證滾動(dòng)和可搜索快照。

PUT timeseries/_bulk
{"index":{"_id":1}}
{"title":"testing 01"}
{"index":{"_id":2}}
{"title":"testing 02"}
{"index":{"_id":3}}
{"title":"testing 03"}
{"index":{"_id":4}}
{"title":"testing 04"}
 

PUT timeseries/_bulk
{"index":{"_id":5}}
{"title":"testing 05"}
 
# # 臨界值(會(huì)滾動(dòng)至下一個(gè)索引)
PUT timeseries/_bulk
{"index":{"_id":6}}
{"title":"testing 06"}

剛執(zhí)行hot后的索引狀態(tài):

執(zhí)行完warm后:

執(zhí)行cold后的索引狀態(tài):

cold 階段:原來(lái)的timeseries-000001不再存在,形成可搜索快照。索引名稱(chēng)前面加了前綴:restored-*,之前的索引名稱(chēng)變成了別名。

相比于手動(dòng)實(shí)現(xiàn),不需要人為實(shí)現(xiàn)掛載環(huán)節(jié),ILM自動(dòng)后臺(tái)實(shí)現(xiàn)。

這點(diǎn),官方文檔也有強(qiáng)調(diào):“Usually ILM will do this automatically, but you can also call the mount snapshot API yourself. ”。

到了這一步,下面就可以對(duì)可搜索快照進(jìn)行檢索了:

# 基于可搜索快照索引檢索
POST restored-timeseries-000001/_search
# 基于別名檢索
POST timeseries/_search
POST timeseries-000001/_search

5、可搜索快照的工作原理

當(dāng)從快照掛載索引時(shí),Elasticsearch 將其分片分配給集群內(nèi)的數(shù)據(jù)節(jié)點(diǎn)。然后,數(shù)據(jù)節(jié)點(diǎn)根據(jù)指定的掛載選項(xiàng)自動(dòng)從存儲(chǔ)庫(kù)檢索相關(guān)分片數(shù)據(jù)到本地存儲(chǔ)。如果可能,搜索使用本地存儲(chǔ)中的數(shù)據(jù)。如果數(shù)據(jù)在本地不可用,Elasticsearch 會(huì)從快照存儲(chǔ)庫(kù)找它需要的數(shù)據(jù)。

如果持有這些分片之一的節(jié)點(diǎn)出現(xiàn)故障,Elasticsearch 會(huì)自動(dòng)將受影響的分片分配到另一個(gè)節(jié)點(diǎn)上,并且該節(jié)點(diǎn)從存儲(chǔ)庫(kù)中恢復(fù)相關(guān)的分片數(shù)據(jù)。不需要副本,也不需要復(fù)雜的監(jiān)控或處理來(lái)恢復(fù)丟失的分片。

盡管默認(rèn)情況下可搜索快照索引沒(méi)有副本,但仍可以通過(guò)調(diào)整 index.number_of_replicas 將副本添加到這些索引中??伤阉骺煺辗制母北就ㄟ^(guò)從快照存儲(chǔ)庫(kù)復(fù)制數(shù)據(jù)來(lái)恢復(fù),就像可搜索快照分片的主分片一樣。相比之下,常規(guī)索引的副本是通過(guò)從主數(shù)據(jù)庫(kù)復(fù)制數(shù)據(jù)來(lái)恢復(fù)的。

6、可搜索快照常見(jiàn)問(wèn)題?

6.1 如何區(qū)分正常索引和可搜索快照索引

  • ILM 實(shí)現(xiàn)的話(huà),看名字,前綴為:restored_*。
  • 手動(dòng)實(shí)現(xiàn)的場(chǎng)景的確不多,自己控制就可以,也可以參考ILM 的實(shí)現(xiàn),設(shè)置 renamed_index 的名稱(chēng)。

6.2 除了掛載,還有哪些靠譜API?

  • 獲取快照緩存詳情
GET /_searchable_snapshots/cache/stats
  • 檢索有關(guān)可搜索快照的統(tǒng)計(jì)信息
GET /_searchable_snapshots/stats
  • 清理可搜索快照的緩存
POST /_searchable_snapshots/cache/clear

7、小結(jié)

實(shí)戰(zhàn)出真知。本文講解了可搜索快照的產(chǎn)生背景、定義、適用場(chǎng)景、特點(diǎn)、工作原理、兩種方式實(shí)戰(zhàn)演練以及常見(jiàn)問(wèn)題與解答,但這些都是可搜索快照基礎(chǔ)內(nèi)容的冰山一角。

可搜索快照還有很多細(xì)節(jié)問(wèn)題待實(shí)戰(zhàn)驗(yàn)證、討論。

歡迎大家就可搜索快照問(wèn)題留言交流。

8、參考

https://www./guide/en/elasticsearch/reference/master/searchable-snapshots-apis.html

https://www./guide/en/elasticsearch/reference/7.13/ilm-searchable-snapshot.html

https://www./guide/en/elasticsearch/reference/current/searchable-snapshots.html

推薦


1、Elasticsearch 7.X 進(jìn)階實(shí)戰(zhàn)私訓(xùn)課
2、如何系統(tǒng)的學(xué)習(xí) Elasticsearch ?
2、全網(wǎng)首發(fā)!《 Elasticsearch 最少必要知識(shí)教程 V1.0 》低調(diào)發(fā)布
3、從實(shí)戰(zhàn)中來(lái),到實(shí)戰(zhàn)中去——Elasticsearch 技能更快提升方法論
4、刻意練習(xí) Elasticsearch 10000 個(gè)小時(shí),鬼知道經(jīng)歷了什么?!
5、干貨 | Elasticsearch 索引生命周期管理 ILM 實(shí)戰(zhàn)指南
6、干貨 | Elasitcsearch7.X集群/索引備份與恢復(fù)實(shí)戰(zhàn)
短時(shí)間快習(xí)得多干貨!
中國(guó)50%+Elastic認(rèn)證工程師出自于此!
比同事搶先一步學(xué)習(xí)進(jìn)階干貨!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多