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

Java中Elasticsearch的核心概念詳解

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

節(jié)點(diǎn)

  • 每個(gè)Elasticsearch節(jié)點(diǎn)實(shí)際上就是一個(gè)Java進(jìn)程,就是一個(gè)Elasticsearch的實(shí)例。
  • 一個(gè)節(jié)點(diǎn) ≠一臺(tái)服務(wù)器,也就是說(shuō)我可以在一臺(tái)服務(wù)器上啟動(dòng)多個(gè)Elasticsearch實(shí)例。

角色

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

master:候選節(jié)點(diǎn)

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

舉個(gè)例子:主節(jié)點(diǎn)好比班長(zhǎng),在班長(zhǎng)不在的時(shí)候(主節(jié)點(diǎn)down機(jī)了),要選舉出一個(gè)臨時(shí)班長(zhǎng)(master中選舉)。

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

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

node.roles: [ master ]

data:數(shù)據(jù)節(jié)點(diǎn)

數(shù)據(jù)節(jié)點(diǎn)顧名思義就是存放數(shù)據(jù)的節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)存儲(chǔ)文檔數(shù)據(jù)和數(shù)據(jù)的CRUD操作。

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

數(shù)據(jù)節(jié)點(diǎn)又分為:data_content,data_hot,data_warm,data_code。

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

Ingest:預(yù)處理節(jié)點(diǎn)

作用類似于Logstash中的Filter,Ingest其實(shí)就是管道的入口節(jié)點(diǎn),比如說(shuō)我們?cè)谧鋈罩痉治龅臅r(shí)候,可以把日志輸出的數(shù)據(jù)交給預(yù)處理節(jié)點(diǎn)做預(yù)處理。

ml:機(jī)器學(xué)習(xí)節(jié)點(diǎn)

機(jī)器學(xué)習(xí)節(jié)點(diǎn)負(fù)責(zé)處理機(jī)器學(xué)習(xí)相關(guān)請(qǐng)求。

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

遠(yuǎn)程候選節(jié)點(diǎn)可以作為遠(yuǎn)程集群的客戶端,主要負(fù)責(zé)搜索遠(yuǎn)程集群數(shù)據(jù)和同步兩個(gè)集群間數(shù)據(jù)。

transform:轉(zhuǎn)換節(jié)點(diǎn)

轉(zhuǎn)換節(jié)點(diǎn)會(huì)進(jìn)行一種特殊操作,通過(guò)特定聚集語(yǔ)句計(jì)算,然后將結(jié)果寫(xiě)到新的索引中。

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

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

Coordinating only node:協(xié)調(diào)節(jié)點(diǎn)

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

分片

分片的思想在很多分布式應(yīng)用和海量數(shù)據(jù)處理的場(chǎng)所非常常見(jiàn),通常來(lái)說(shuō),面對(duì)海量數(shù)據(jù)的存儲(chǔ),單個(gè)節(jié)點(diǎn)顯得力不從心。

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

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

Shards主分片

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

分片的數(shù)量只能在索引創(chuàng)建前指定,并且索引創(chuàng)建后不能更改。這里和索引分片的算法有關(guān),因?yàn)槭峭ㄟ^(guò)取模算法去判斷分到哪,如果改變了就無(wú)法正常查詢之前的索引。

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

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

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

Replicas副本分片

代表索引副本,es可以設(shè)置多個(gè)索引的副本,副本的作用一是提高系統(tǒng)的容錯(cuò)性,當(dāng)某個(gè)節(jié)點(diǎn)某個(gè)分片損壞或丟失時(shí)可以從副本中恢復(fù)。

二是提高es的查詢效率,es會(huì)自動(dòng)對(duì)搜索請(qǐng)求進(jìn)行負(fù)載均衡。

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

集群

上面所說(shuō)的節(jié)點(diǎn)角色構(gòu)成了整個(gè)集群。

集群狀態(tài)

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

返回參數(shù)說(shuō)明

示例:

{
  "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中索引類比為關(guān)系型數(shù)據(jù)庫(kù)中的Table

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

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

文檔(doc)可以類比為關(guān)系型數(shù)據(jù)庫(kù)中的行,每個(gè)文檔都有一個(gè)文檔id。

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

相關(guān)文章

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

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

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

    springboot+thymeleaf+mybatis實(shí)現(xiàn)甘特圖的詳細(xì)過(guò)程

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

    搞懂Java線程池

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

    Yml轉(zhuǎn)properties文件工具類YmlUtils的詳細(xì)過(guò)程(不用引任何插件和依賴)

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

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

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

    JAVA中split函數(shù)的常見(jiàn)用法實(shí)例

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

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

    java 線程面試題是比較熱門(mén)的面試題,下面小編給大家分享了50道java線程面試題必掌握,大家來(lái)一起學(xué)習(xí)吧為面試好好準(zhǔn)備吧
    2016-11-11
  • springboot啟動(dòng)掃描不到dao層接口的解決方案

    springboot啟動(dòng)掃描不到dao層接口的解決方案

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

    Java讀寫(xiě)Windows共享文件夾的方法實(shí)例

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

    Spring Boot 如何整合連接池

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

最新評(píng)論