日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基本概念

發(fā)布時(shí)間:2025/3/17 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基本概念 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

基本概念

  • 文檔(Document)

    • es是面向文檔的,文檔是所有可搜索數(shù)據(jù)的最小單位

    • 文檔會(huì)被序列化為JSON格式,保存在es中

    • 每個(gè)文檔都有一個(gè)Unique ID

      • 可以自己指定
      • 也可以由es自動(dòng)生成
    • 示例

      {"year": 1995,"@version": "1","genre": ["Adventure", "Animation","Children", "Comedy", "Fantasy"],"id": "1","title": "Toy Story" }
    • 文檔的元數(shù)據(jù)

      {"_index": "movies", // 文檔所在的索引名"_type": "_doc", // 文檔所屬的類型名"_id": "1", // 文檔的uid"_score": 14.69302, // 相關(guān)性打分"_source": { // 文檔的原始json數(shù)據(jù)"year": 1995,"@version": "1", // 文檔的版本信息"genre": ["Adventure", "Animation","Children", "Comedy", "Fantasy"],"id": "1","title": "Toy Story"} }

      其他:_all整合所有字段內(nèi)容到該字段,已被廢除

  • 索引(index)

    • 索引是文檔的容器,是一類文檔的集合(類似于mongo中的集合)
      • Index體現(xiàn)邏輯空間的概念,每個(gè)索引都有自己的Mapping定義,用于定義文檔的字段及類型(類似于表結(jié)構(gòu)schema)
      • Shard體現(xiàn)物理空間的概念,索引中的數(shù)據(jù)分散在Shard上
    • Mapping和Settings
      • Mapping等一文檔字段及類型
      • Settings定義不同的數(shù)據(jù)分布
    • 其他語義:保存一個(gè)文檔到es中的過程,也叫索引(indexing)
  • Type

    • 7.0開始,一個(gè)Index只能創(chuàng)建一個(gè)Type,也就是_doc

分布式系統(tǒng)

  • 高可用性

    • 服務(wù)可用性:允許有節(jié)點(diǎn)停止服務(wù)
    • 數(shù)據(jù)可用性:部分節(jié)點(diǎn)丟失,不會(huì)丟失數(shù)據(jù)
  • 可擴(kuò)展性

    • 請求量提升 / 數(shù)據(jù)不斷增長,將數(shù)據(jù)分布到所有節(jié)點(diǎn)上(存儲(chǔ)的水平擴(kuò)展)
  • es的分布式架構(gòu)

    • 不同集群通過不同的名字區(qū)分,默認(rèn)是”elasticsearch“

      • 可以通過配置文件,或者啟動(dòng)時(shí)指定

        -E cluster.name=xxx
      • 一個(gè)集群可以有一個(gè)或多個(gè)節(jié)點(diǎn)

  • 節(jié)點(diǎn)

    • 節(jié)點(diǎn)是一個(gè)Elasticsearch的實(shí)例

      • 本質(zhì)是一個(gè)JAVA進(jìn)程
      • 一臺(tái)機(jī)器可以運(yùn)行多個(gè)Elasticsearch進(jìn)程,但是生產(chǎn)環(huán)境一般建議一臺(tái)機(jī)器只運(yùn)行一個(gè)Elasticsearch實(shí)例
    • 節(jié)點(diǎn)的名字可以通過配置文件或啟動(dòng)時(shí)指定

      -E node.name=xxx
    • 每個(gè)節(jié)點(diǎn)啟動(dòng)之后,會(huì)被分配一個(gè)UID,保存在data目錄下

  • Master-eligible Node和Master Node

    • 每個(gè)節(jié)點(diǎn)啟動(dòng)后,默認(rèn)就是一個(gè)master-eligible節(jié)點(diǎn)
    • master-eligible節(jié)點(diǎn)可以參加選主流程,成為master節(jié)點(diǎn)
    • 當(dāng)?shù)匾粋€(gè)節(jié)點(diǎn)啟動(dòng)后,它會(huì)將自己選舉成為master節(jié)點(diǎn)
    • 每個(gè)節(jié)點(diǎn)上都保存了集群的狀態(tài),只有master節(jié)點(diǎn)上才能修改集群的狀態(tài)信息(cluster state):
      • 所有節(jié)點(diǎn)信息
      • 所有的索引(集)以及相關(guān)的Mapping和Setting信息
      • 分片的路由信息
  • Data Node 和Coordinating Node

    • data節(jié)點(diǎn)負(fù)責(zé)保存分片數(shù)據(jù),是實(shí)現(xiàn)水平擴(kuò)容的基本單位
    • coordinating節(jié)點(diǎn)負(fù)責(zé)接受客戶端的請求,將請求分發(fā)到合適的節(jié)點(diǎn),最終把結(jié)果匯集到一起
    • 每個(gè)節(jié)點(diǎn)默認(rèn)都起到coordinating節(jié)點(diǎn)的職責(zé)
  • 其他節(jié)點(diǎn)類型

    • Hot & Warm Node (冷熱節(jié)點(diǎn))
      • 熱節(jié)點(diǎn)是配置比較高的節(jié)點(diǎn)data node,用于存儲(chǔ)較新的數(shù)據(jù),冷節(jié)點(diǎn)相反,以此降低集群部署的成本
    • Machine Learning Node
      • 負(fù)責(zé)跑機(jī)器學(xué)習(xí)的任務(wù),用來做異常檢查
  • 節(jié)點(diǎn)啟動(dòng)時(shí),讀取elasticsearch.yml配置文件,來決定自己承擔(dān)的角色

    • master eligible 對應(yīng)的配置項(xiàng)是 node.master,默認(rèn)值是true
    • data對應(yīng)的是node.data,默認(rèn)值true
    • 一個(gè)節(jié)點(diǎn)可以承擔(dān)多種角色
    • 在生產(chǎn)環(huán)境中,推薦設(shè)置單一角色的節(jié)點(diǎn)
  • 分片

    • 主分片(Primary Shard),用以解決數(shù)據(jù)水平擴(kuò)展的問題。通過主分片,可以將數(shù)據(jù)分布到集群內(nèi)的所有節(jié)點(diǎn)上

      • 一個(gè)分片是一個(gè)運(yùn)行Lucene的實(shí)例
      • 主分片數(shù)在索引創(chuàng)建時(shí)指定,后續(xù)不允許修改,除非Reindex
    • 副本(Replica Shard),用以解決數(shù)據(jù)高可用問題,是主分片的拷貝

      • 副本分片數(shù),可以動(dòng)態(tài)調(diào)整
      • 增加副本數(shù),還可以一定程度上提高服務(wù)的可用性(吞吐性能)
    • 示例1:在一個(gè)3節(jié)點(diǎn)的集群中,blogs索引(集)的分片分布情況

      PUT /blogs {"settings": {"number_of_shards": 3, // 主分片數(shù)3"number_of_replicas": 1 // 副本1份} }
      • Node1
        • P1
        • R2
      • Node2
        • P2
        • R3
      • Node3
        • P3
        • R1
    • 示例2:在一個(gè)2節(jié)點(diǎn)的集群中,如果有3個(gè)索引(集)的分片情況

      PUT /index1 {"settings": {"number_of_shards": 1, // 主分片數(shù)1"number_of_replicas": 1 // 副本1份} }
      • Node1
        • Index1P1,Index2P1, Index3P1
      • Node2
        • Index1R1, Index2R1, Index3R1
    • 示例3: 一個(gè)2節(jié)點(diǎn)的集群中,blog索引在如下設(shè)置下的分片情況

      PUT /blogs {"settings": {"number_of_shards": 3, // 主分片數(shù)3"number_of_replicas": 1 // 副本1份} }
      • Node1
        • P1
        • R2
        • R3
      • Node2
        • P2
        • P3
        • R1
    • 分片的設(shè)定:在生產(chǎn)環(huán)境中,需要提前做好容量的規(guī)劃

      • 分片數(shù)設(shè)置過小
        • 導(dǎo)致后續(xù)無法增加節(jié)點(diǎn)實(shí)現(xiàn)水平擴(kuò)展
        • 單個(gè)分片數(shù)據(jù)量太大,導(dǎo)致數(shù)據(jù)重新分配耗時(shí)
      • 分片數(shù)設(shè)置過大
        • 影響搜索結(jié)果的相關(guān)性打分,影響統(tǒng)計(jì)結(jié)果的準(zhǔn)確性
        • 單個(gè)節(jié)點(diǎn)傻姑娘過多的分片,會(huì)導(dǎo)致資源浪費(fèi),同時(shí)也會(huì)影響性能(7.0開始,默認(rèn)分片數(shù)由5改為1)
  • 查看集群健康狀態(tài)

    GET _cluster/health

    狀態(tài)說明:

    • green:主分片和副本都分配正常
    • yellow:主分片分配正常,有副本未能正常分配
    • red:有主分片未能正常分配。例如,當(dāng)服務(wù)器磁盤容量操作85%時(shí),去創(chuàng)建一個(gè)新的索引(集)
    GET _cat/nodes # 查看節(jié)點(diǎn)信息 GET _cat/shards # 查看分片信息
  • 通過cerebro查看集群的分片及詳細(xì)信息

總結(jié)

以上是生活随笔為你收集整理的基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。