欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Elasticsearch的核心概念詳解

 更新時間:2023年07月27日 10:55:05   作者:碼農BookSea  
這篇文章主要介紹了Java中Elasticsearch的核心概念詳解,Elasticsearch 是一個分布式、免費和開放的搜索和分析引擎,適用于所有類型的數據,包括文本、數字、地理空間、結構化和非結構化數據,需要的朋友可以參考下

節(jié)點

  • 每個Elasticsearch節(jié)點實際上就是一個Java進程,就是一個Elasticsearch的實例。
  • 一個節(jié)點 ≠一臺服務器,也就是說我可以在一臺服務器上啟動多個Elasticsearch實例。

角色

集群節(jié)點角色可以在配置文件elasticsearch.yml中通過node.roles配置,如果配置了節(jié)點角色,那么該節(jié)點將只會執(zhí)行配置的角色功能。

master:候選節(jié)點

所謂master節(jié)點,就是在主節(jié)點down機的時候,可以參與選舉,取而代之的節(jié)點。

舉個例子:主節(jié)點好比班長,在班長不在的時候(主節(jié)點down機了),要選舉出一個臨時班長(master中選舉)。

master節(jié)點不僅有選舉權還有被選舉權。每個master節(jié)點主要負責索引創(chuàng)建、索引刪除、追蹤節(jié)點信息和決定分片分配節(jié)點等。

配置節(jié)點(下面節(jié)點配置方法同):

node.roles: [ master ]

data:數據節(jié)點

數據節(jié)點顧名思義就是存放數據的節(jié)點,數據節(jié)點負責存儲文檔數據和數據的CRUD操作。

因此該節(jié)點是CPU和IO密集型,需要實時監(jiān)控該節(jié)點資源信息,以免過載。

數據節(jié)點又分為:data_content,data_hot,data_warm,data_code

  • data_content:數據內容節(jié)點,目錄節(jié)點負責存儲常量數據,且不隨著時間的推移,改變數據的溫層(hot、warm、cold)。且該節(jié)點的查詢優(yōu)先級是高于其它IO操作,所以該節(jié)點search和aggregations都會較快一些。
  • data_hot:熱節(jié)點,保存熱數據,經常會被訪問,用于存儲最近頻繁搜索和修改的時序數據。
  • data_code:冷節(jié)點,保存冷數據,很少會被訪問,當數據不再更新,那么可以將該數據移動到冷數據節(jié)點;冷數據節(jié)點用于存儲只讀,且訪問頻率較低的數據。該節(jié)點機器性能可以低一點。
  • data_warm:溫節(jié)點,介于熱節(jié)點和冷節(jié)點之間(溫節(jié)點是我自己翻譯的),當數據訪問頻率下降,可以將其移動到溫節(jié)點,溫節(jié)點用于存儲修改較少,但仍然有查詢的數據。查詢的頻率肯定比熱點節(jié)點要少。

Ingest:預處理節(jié)點

作用類似于Logstash中的Filter,Ingest其實就是管道的入口節(jié)點,比如說我們在做日志分析的時候,可以把日志輸出的數據交給預處理節(jié)點做預處理。

ml:機器學習節(jié)點

機器學習節(jié)點負責處理機器學習相關請求。

remote_ cluster_ client:候選客戶端節(jié)點

遠程候選節(jié)點可以作為遠程集群的客戶端,主要負責搜索遠程集群數據和同步兩個集群間數據。

transform:轉換節(jié)點

轉換節(jié)點會進行一種特殊操作,通過特定聚集語句計算,然后將結果寫到新的索引中。

voting_ only:僅投票節(jié)點

在master選舉過程中,僅投票節(jié)點顧名思義就是僅僅投票,不會被選舉為master。

Coordinating only node:協調節(jié)點

協調節(jié)點主要負責根據集群狀態(tài)路由分發(fā)搜索,路由分發(fā)bulk操作。此外每個節(jié)點都是自帶協調節(jié)點功能

分片

分片的思想在很多分布式應用和海量數據處理的場所非常常見,通常來說,面對海量數據的存儲,單個節(jié)點顯得力不從心。

通俗解釋,分片就是將數據拆分多份,放到不同的服務器節(jié)點。

Elasticsearch里的分片為為2種:主分片和副本分片

Shards主分片

es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節(jié)點上。構成分布式搜索。

分片的數量只能在索引創(chuàng)建前指定,并且索引創(chuàng)建后不能更改。這里和索引分片的算法有關,因為是通過取模算法去判斷分到哪,如果改變了就無法正常查詢之前的索引。

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

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

這里的routing指的就是document的id,如果number_of_primary_shards在查詢的時候取余發(fā)生的變化,無法獲取到該數據。

Replicas副本分片

代表索引副本,es可以設置多個索引的副本,副本的作用一是提高系統的容錯性,當某個節(jié)點某個分片損壞或丟失時可以從副本中恢復。

二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。

  • 一個索引包含一個或多個分片,在7.0之前默認五個主分片,每個主分片一個副本;在7.0之后默認一個主分片。副本可以在索引創(chuàng)建之后修改數量,但是主分片的數量一旦確定不可修改,只能創(chuàng)建索引。
  • 每個分片都是一個Lucene實例,有完整的創(chuàng)建索引和處理請求的能力。
  • ES會自動在nodes上做分片均衡。
  • 一個doc不可能同時存在于多個主分片中,但是當每個主分片的副本數量不為一時,可以同時存在于多個副本中。
  • 每個主分片和其副本分片不能同時存在于同一個節(jié)點上,所以最低的可用配置是兩個節(jié)點互為主備。
  • 副本分片是不能直接寫入數據的,只能通過主分片做數據同步。
  • 增減節(jié)點時,shard會自動在nodes中負載均衡。

集群

上面所說的節(jié)點角色構成了整個集群。

集群狀態(tài)

  • Green:主/副分片都已經分配好且可用,集群處于最健康的狀態(tài)100%可用。
  • Yellow:主分片可用,但是至少有一個副本是未分配的。這種情況下數據也是完整的,但是集群的高可用性會被弱化。
  • Red:至少有一個不可用的主分片。此時只是部分數據可以查詢,已經影響到了整體的讀寫,需要重點關注。 健康值檢查
//查看集群健康狀況
_cat/health
_cluster/health

返回參數說明

示例:

{
  "cluster_name" : "elastic-log-xxx",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 24,
  "number_of_data_nodes" : 21,
  "active_primary_shards" : 27777,
  "active_shards" : 27804,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

在這里插入圖片描述

索引和文檔

es中索引類比為關系型數據庫中的Table

在7.0版本之前index由若干個type組成,type實際上是文檔的邏輯分類,而文檔是es存儲的最小單元。

7.0及之后弱化了type的概念,7.x版本index只有一個type:_doc。

文檔(doc)可以類比為關系型數據庫中的行,每個文檔都有一個文檔id。

到此這篇關于Java中Elasticsearch的核心概念詳解的文章就介紹到這了,更多相關Elasticsearch核心概念內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring?MVC的三種異常處理方式實例詳解

    Spring?MVC的三種異常處理方式實例詳解

    在SpringMVC 中,不管是編譯異常還是運行時異常,都可以最終由 SpringMVC提供的異常處理器進行統一處理,這樣就避免了隨時隨地捕獲處理的繁瑣性,這篇文章主要介紹了Spring?MVC的三種異常處理方式?,需要的朋友可以參考下
    2024-01-01
  • springboot+thymeleaf+mybatis實現甘特圖的詳細過程

    springboot+thymeleaf+mybatis實現甘特圖的詳細過程

    這篇文章主要介紹了springboot+thymeleaf+mybatis實現甘特圖的詳細過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • 搞懂Java線程池

    搞懂Java線程池

    這篇文章主要介紹了Java線程池,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Yml轉properties文件工具類YmlUtils的詳細過程(不用引任何插件和依賴)

    Yml轉properties文件工具類YmlUtils的詳細過程(不用引任何插件和依賴)

    這篇文章主要介紹了Yml轉properties文件工具類YmlUtils(不用引任何插件和依賴),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Java string.trim()究竟去掉了什么

    Java string.trim()究竟去掉了什么

    這篇文章主要介紹了Java string.trim()究竟去掉了什么,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • JAVA中split函數的常見用法實例

    JAVA中split函數的常見用法實例

    Java中我們可以利用split把字符串按照指定的分割符進行分割,然后返回字符串數組,下面這篇文章主要給大家介紹了關于JAVA中split函數的常見用法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • 50 道Java 線程面試題(經典)

    50 道Java 線程面試題(經典)

    java 線程面試題是比較熱門的面試題,下面小編給大家分享了50道java線程面試題必掌握,大家來一起學習吧為面試好好準備吧
    2016-11-11
  • springboot啟動掃描不到dao層接口的解決方案

    springboot啟動掃描不到dao層接口的解決方案

    這篇文章主要介紹了springboot啟動掃描不到dao層接口的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java讀寫Windows共享文件夾的方法實例

    Java讀寫Windows共享文件夾的方法實例

    本篇文章主要介紹了Java讀寫Windows共享文件夾的方法實例,具有一定的參考價值,有興趣的同學可以了解一下。
    2016-11-11
  • Spring Boot 如何整合連接池

    Spring Boot 如何整合連接池

    這篇文章主要介紹了Spring Boot 如何整合連接池,幫助大家更好的理解和學習spring boot框架,感興趣的朋友可以了解下
    2020-11-11

最新評論