Elasticsearch的一些基本概念

文章目錄

  • 基本概念:文檔和索引
    • JSON文檔
    • 元數據
    • 索引
    • REST API
  • 節點和集群
    • 節點
      • Master eligible節點和Master節點
      • Data Node 和 Coordinating Node
      • 其它節點
  • 分片(Primary Shard & Replica Shard)
    • 分片的設定
    • 操作命令

基本概念:文檔和索引

Elasticsearch是面向文檔的,文檔是所有可搜索數據的最小單位。

  • 文檔會被序列化成JSON格式,保存在Elasticsearch中。
  • JSON對象由字段組成,每個字段都有對應的字段類型(字符串/數值/布爾/日期/二進制/范圍類型)。
  • 每個文檔都有一個UniqueID,你可以自己指定ID,或者通過Elasticsearch自動生成。

JSON文檔

一篇文檔包含了一系列的字段,類似數據庫表中一條記錄,字段的類型可以指定或者通過Elasticsearch自動推算,支持數組,支持嵌套。
在這里插入圖片描述

元數據

每一個文檔都有一個元數據,元數據是用于標注文檔的相關信息的。

  • _index: 文檔所屬的索引名
  • _type:文檔所屬的類型名
  • _id:文檔唯一ld
  • _source:文檔的原始Json數據
  • _all:整合所有字段內容到該字段,7.0版本已被廢除
  • _version:文檔的版本信息
  • _score:相關性打分
    在這里插入圖片描述

索引

索引(Index)是文檔的容器,是一類文檔的結合。

  • Index體現了邏輯空間的概念:每個索引都有自己的Mapping定義,用于定義包含的文檔的字段名和字段類型;
  • Shard體現了物理空間的概念:索引中的數據分散在Shard上
  • 索引的 Mapping定義文檔字段的類型,Setting定義不同的數據分布
    在這里插入圖片描述
{"settings": {"index": {"creation_date": "1690724511450","number_of_shards": "1","number_of_replicas": "1","uuid": "fl-Kf7M9TiiEpFPfAT6Iew","version": {"created": "7010099"},"provided_name": "movies"}}

REST API

補充:kibana顯示中文界面,打開 kibana/config/kibana.yml,最后一行寫入 i18n.locale: “zh-CN”,然后重新啟動kibana

進入Kibana頁面–>開發工具–>console:
在這里插入圖片描述

//查看索引信息
GET kibana_sample_data_ecommerce//查看索引的文檔總數
GET kibana_sample_data_ecommerce/_count//_cat相關
//根據索引名稱關鍵詞通配符查詢
GET /_cat/indices/kibana*?&s=index//按照文檔個數排序
GET /_cat/indices?v&s=docs.count:desc//查看狀態為green的索引
GET /_cat/indices?v&health=green//查看每個索引占用的內存
GET /_cat/indices?v&h=i,tm&s=tm:desc

節點和集群

Elasticsearch分布式系統的高可用性和可擴展性:

  • 服務可用性-允許有節點停止服務
  • 數據可用性-部分節點丟失,不會丟失數據
  • 請求量提升/數據的不斷增長(將數據分布到所有節點上)

Elasticsearch分布式架構的特點

  • 存儲的水平擴容
  • 提高系統的可用性,部分節點停止服務,整個集群的服務不受影響
  • 不同的集群通過不同的名字來區分,默認名字“elasticsearch”,也可以通過配置文件修改,或者在命令行中-E cluster.name=geektime進行設定
  • 一個集群可以有一個或者多個節點

節點

  • 節點是一個 Elasticsearch的實例,其本質上就是一個 JAVA進程,一臺機器 上可以運行多個Elasticsearch進程,但是生產環境一般建議一臺機器上只運行一個Elasticsearch實例;
  • 每一個節點都有名字, 通過配置文件配置,或者啟動時候 -E node.name=node1 指定。每一個節點在啟動之后,會分配一個UID,保存在data目錄下。

Master eligible節點和Master節點

  • 每個節點啟動后,默認就是一個Master eligible節點(可以通過設置node.master: false 禁止)
  • Master-eligible節點可以參加選主流程,成為Master 節點;當第一個節點啟動時候,它會將自己選舉成Master節點。
  • 每個節點上都保存了集群的狀態,只有Master節點才能修改集群的狀態信息。
  • 集群狀態(Cluster State) 維護了一個集群中必要的信息,包括:所有的節點信息、所有的索引和其相關的Mapping與Setting 信息、分片的路由信息。任意節點都能修改信息會導致數據的不一致性。

Data Node 和 Coordinating Node

  • 可以保存數據的節點,叫做Data Node,負責保存分片數據,在數據擴展上起到了至關重要的作用。
  • Coordinating Node:負責接受Client的請求,將請求分發到合適的節點,最終把結果匯集到一起;每個節點默認都起到了Coordinating Node的職責。

其它節點

  • Hot & Warm Node:不同硬件配置的Data Node, 用來實現Hot & Warm架構,降低集群部署的成本
  • Machine L earning Node:負責跑機器學習的Job,用來做異常檢測
    *Tribe Node:(5.3開始使用Cross Cluster Serarch) Tribe Node連接到不同的Elasticsearch集群,并且支持將這些集群當成一個單獨的集群處理

分片(Primary Shard & Replica Shard)

  • 主分片,用以解決數據水平擴展的問題。通過主分片,可以將數據分布到集群內的所有節點之上。一個分片是一個運行的Lucene的實例。主分片數在索引|創建時指定,后續不允許修改,除非Reindex。
  • 副本用以解決數據高可用的問題。分片是主分片的拷貝副本分片數,可以動態地調整。增加副本數,還可以在一定程度上提高服務的可用性(讀取的吞吐)

分片的設定

  • 對于生產環境中分片的設定,需要提前做好容量規劃。如果分片數設置過小,導致后續無法增加節點實現水品擴展;如果單個分片的數據量太大,導致數據重新分配耗時。
  • 分片數設置過大,7.0開始,默認主分片設置成1, 解決了over-sharding的問題,影響搜索結果的相關性打分,影響統計結果的準確性;單個節點上過多的分片,會導致資源浪費,同時也會影響性能。

操作命令

通過 GET _cluster/health 可以查看集群的健康度
在這里插入圖片描述
其中 status的含義如下:

  • Green- 主分片與副本都正常分配
  • Yellow -主分片全部正常分配,有副本分片未能正常分配
  • Red -有主分片未能分配例如,當服務器的磁盤容量超過85%時,去創建了一個新的索引
#查看健康度(按下Command+/可以跳轉到官網查看詳細用法)
GET _cluster/health#查看node信息
GET _cat/nodes #查看shards信息
GET _cat/shards

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35230.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35230.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35230.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL-每日一題【1517. 查找擁有有效郵箱的用戶】

題目 表: Users 編寫一個解決方案,以查找具有有效電子郵件的用戶。 一個有效的電子郵件具有前綴名稱和域,其中: 前綴 名稱是一個字符串,可以包含字母(大寫或小寫),數字,下劃線 _ &…

RT-Thread Smart 用戶態開發體驗

背景 RT-Thread Smart 是基于 RT-Thread 操作系統上的混合操作系統,它把應用從內核中獨立出來,形成獨立的用戶態應用程序,并具備獨立的地址空間。 自 V5.0.0 起,rt-smart 分支已合并至 master 分支上,下載 rt-thread …

【學習】若依源碼(前后端分離版)之 “ 上傳圖片功能實現”

大型紀錄片:學習若依源碼(前后端分離版)之 “ 上傳圖片功能實現” 前言前端部分后端部分結語 前言 圖片上傳也基本是一個項目的必備功能了,所以今天和大家分享一下我最近在使用若依前后端分離版本時,如何實現圖片上傳…

數據結構和算法基礎

鞏固基礎,砥礪前行 。 只有不斷重復,才能做到超越自己。 能堅持把簡單的事情做到極致,也是不容易的。 java程序員要學習那些技能 : 作為一名Java程序員,要學習以下技能: Java編程語言:掌握Java編程語言的…

虛擬現實與增強現實技術的商業應用

章節一:引言 隨著科技的不斷發展,虛擬現實(Virtual Reality,簡稱VR)與增強現實(Augmented Reality,簡稱AR)技術正日益成為商業領域中的重要創新力量。這兩種技術為企業帶來了前所未…

Oracle將與Kubernetes合作推出DevOps解決方案!

導讀Oracle想成為云計算領域的巨頭,但它不是推出自己品牌的云DevOps軟件,而是將與CoreOS在Kubernetes端展開合作。七年前,Oracle想要成為Linux領域的一家重量級公司。于是,Oracle主席拉里埃利森(Larry Ellison&#xf…

阿里云Windows服務器怎么安裝多個網站?

本文阿里云百科介紹如何在Windows Server 2012 R2 64位系統的ECS實例上使用IIS服務器搭建多個Web站點。本教程適用于熟悉Windows操作系統,希望合理利用資源、統一管理站點以提高運維效率的用戶。比如,您可以在一臺云服務器上配置多個不同分類的博客平臺或…

wps設置一鍵標題字體和大小

參考 wps設置一鍵標題字體和大小:https://www.kafan.cn/A/7v5le1op3g.html 統一一鍵設置

docsify gitee 搭建個人博客

docsify & gitee 搭建個人博客 文章目錄 docsify & gitee 搭建個人博客1.npm 安裝1.1 在Windows上安裝npm:1.2 在macOS上安裝npm:1.3 linux 安裝npm 2. docsify2.1 安裝docsify2.2 自定義配置2.2.1 通過修改index.html,定制化開發頁面…

24屆近5年東南大學自動化考研院校分析

今天給大家帶來的是東南大學控制考研分析 滿滿干貨~還不快快點贊收藏 一、東南大學 學校簡介 東南大學是我國最早建立的高等學府之一,素有“學府圣地”和“東南學府第一流”之美譽。東南大學前身是創建于1902年的三江師范學堂。1921年經近代著名教育家…

數據結構-棧的實現(C語言版)

前言 棧是一種特殊的線性表,只允許在固定的一端進行插入和刪除的操作,進行數據插入和刪除的一端叫做棧頂,另一端叫做棧底。 棧中的數據元素遵循后進先出的的原則。 目錄 1.壓棧和出棧 2. 棧的實現 3.測試代碼 1.壓棧和出棧 壓棧&#xff…

C語言學習之函數的返回值

函數的返回值:所有函數的返回值都是通過return關鍵字返回的;返回一個基本類型的值:案例: int my_mod(int x,int y){return x % y;}返回一個地址:案例: int *func(int *p){return p;}返回全局變量的地址&a…

k8s 滾動更新控制(一)

在傳統的應用升級時,通常采用的方式是先停止服務,然后升級部署,最后將新應用啟動。這個過程面臨一個問題,就是在某段時間內,服務是不可用的,對于用戶來說是非常不友好的。而kubernetes滾動更新,…

數據庫的相關

ACID 事務的四大特性主要是:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。 原子性(Atomicity) 原子性是…

【數據結構】二叉樹篇| 綱領思路01+刷題

博主簡介:努力學習的22級計算機科學與技術本科生一枚🌸博主主頁: 是瑤瑤子啦每日一言🌼: 所謂自由,不是隨心所欲,而是自我主宰。——康德 目錄 一、二叉樹刷題綱領二、刷題1、104. 二叉樹的最大深度2、 二叉…

react進階

react-virtualized的高階組件,Autosize可以使屏幕適配。使用render-props模式來獲取到AutoSizer組件暴露的width和height屬性。JSON.parse(JSON.stringify())不適用于有undefined的數據。 深拷貝的使用,不能使用在有undefined的數據中。有直接過濾undefi…

jacoco功能測試-代碼覆蓋率

1、下載 jacoco 官網地址:EclEmma - JaCoCo Java Code Coverage Library 2、拷貝 jar 包 下載好后,找到這兩個文件,然后找到被測項目 3、啟動 jacocoagent,監控被測項目 java -javaagent:jacocoagent.jarincludes*,outputtcp…

【Java】異常處理 之 使用Log4j

使用 Log4j 前面介紹了Commons Logging,可以作為“日志接口”來使用。而真正的“日志實現”可以使用Log4j。 Log4j是一種非常流行的日志框架,最新版本是2.x。 Log4j是一個組件化設計的日志系統,它的架構大致如下: log.info(&q…

linux0.95(VFS重點)源碼通俗解讀(施工中)

文件系統在磁盤中的體現 下面是磁盤的內容,其中i節點就是一個inode數組,邏輯塊就是數據塊可用于存放數據 操作系統通過將磁盤數據讀入到內存中指定的緩沖區塊來與磁盤交互,對內存中的緩沖區塊修改后寫回磁盤。 進程(task_struct * task[N…

Mysql中如果建立了索引,索引所占的空間隨著數據量增長而變大,這樣無論寫入還是查詢,性能都會有所下降,怎么處理?

索引所占空間的增長確實會對MySQL數據庫的寫入性能和查詢性能造成影響,這主要是由于索引數據過多時會導致磁盤I/O操作變得非常頻繁,從而使性能下降。為此,可以采取以下幾種方式來減緩這種影響: 1. 限制索引的大小:可以…