Elasticsearch分布式搜索引擎介紹-創(chuàng)新互聯(lián)

Elasticsearch簡(jiǎn)介

Elasticsearch是一個(gè)近實(shí)時(shí)的分布式搜索分析引擎,常被用作全文搜索,結(jié)構(gòu)化搜索,分析等。它使用 Java 編寫(xiě)的且開(kāi)源,它的內(nèi)部使用 Lucene 做索引與搜索,但是它的目的是使全文檢索變得簡(jiǎn)單,通過(guò)隱藏 Lucene 的復(fù)雜性,取而代之的提供一套簡(jiǎn)單一致的 RESTful API。

創(chuàng)新互聯(lián)基于分布式IDC數(shù)據(jù)中心構(gòu)建的平臺(tái)為眾多戶(hù)提供雅安機(jī)房托管 四川大帶寬租用 成都機(jī)柜租用 成都服務(wù)器租用。

Lucene 是一個(gè)基于Java的全文信息檢索工具庫(kù),它不是一個(gè)完整的搜索應(yīng)用程序,而是為你的應(yīng)用程序提供索引和搜索功能。Lucene 目前是Apache Jakarta家族中的一個(gè)開(kāi)源項(xiàng)目。也是目前最為流行的基于 Java 開(kāi)源全文檢索工具庫(kù)。

然而,Elasticsearch 不僅僅是 Lucene,并且也不僅僅只是一個(gè)全文搜索引擎。 它可以被下面這樣準(zhǔn)確的形容:

  • 一個(gè)分布式的實(shí)時(shí)文檔存儲(chǔ),每個(gè)字段可以被索引與搜索
  • 一個(gè)分布式近實(shí)時(shí)分析搜索引擎
  • 能勝任上百個(gè)服務(wù)節(jié)點(diǎn)的擴(kuò)展,并支持PB級(jí)別的結(jié)構(gòu)化或者非結(jié)構(gòu)化數(shù)據(jù)

基本概念

cluster集群:一個(gè)或多個(gè)節(jié)點(diǎn)的集合,通過(guò)啟動(dòng)時(shí)指定名字作為唯一標(biāo)識(shí),默認(rèn)cluster-state
node節(jié)點(diǎn):?jiǎn)?dòng)的ES的單個(gè)實(shí)例,保存數(shù)據(jù)并具有索引和搜索的能力,通過(guò)名字在集群中唯一標(biāo)識(shí),默認(rèn)node-n
index索引:具有相似特點(diǎn)的文檔的集合,可以對(duì)應(yīng)為關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù),通過(guò)名字在集群內(nèi)唯一標(biāo)識(shí)??梢詫?duì)應(yīng)為Mysql中的數(shù)據(jù)庫(kù)。
type文檔類(lèi)別:索引內(nèi)部的邏輯分類(lèi),ES 6.x 版本中,一個(gè)索引只允許一個(gè)type,不再支持多個(gè)type。7.x版本中,type將廢棄??梢詫?duì)應(yīng)為Mysql數(shù)據(jù)庫(kù)中的表。
document文檔:構(gòu)成索引的最小單元,屬于一個(gè)索引的某個(gè)類(lèi)別,通過(guò)id 在Type 內(nèi)唯一標(biāo)識(shí)??梢詫?duì)應(yīng)Mysql數(shù)據(jù)庫(kù)的表中的行。
field字段:構(gòu)成文檔的單元??梢詫?duì)應(yīng)Mysql數(shù)據(jù)庫(kù)的表中的列。
mapping索引映射:用來(lái)約束文檔字段的類(lèi)型,可以理解為索引內(nèi)部結(jié)構(gòu)??梢詫?duì)應(yīng)Mysql數(shù)據(jù)庫(kù)的表中每列的類(lèi)型。
shard分片:將索引分為多個(gè)塊,每塊叫做一個(gè)分片。索引定義時(shí)需要指定分片數(shù)且不能更改,默認(rèn)一個(gè)索引有5個(gè)分片,每個(gè)分片都是一個(gè)功能完整的Index,分片帶來(lái)規(guī)模上(數(shù)據(jù)水平切分)和性能上(并行執(zhí)行)的提升,是ES數(shù)據(jù)存儲(chǔ)的最小單位。
replicas分片的備份:每個(gè)分片默認(rèn)一個(gè)備份分片,它可以提升節(jié)點(diǎn)的可用性,同時(shí)能夠提升搜索時(shí)的并發(fā)性能(搜索可以在全部分片上并行執(zhí)行)

Elasticsearch特點(diǎn)

倒排索引

索引是現(xiàn)代搜索引擎的核心,建立索引的過(guò)程就是把源數(shù)據(jù)處理成非常方便查詢(xún)的索引文件的過(guò)程。

為什么索引這么重要呢,試想你現(xiàn)在要在大量的文檔中搜索含有某個(gè)關(guān)鍵詞的文檔,那么如果不建立索引的話你就需要把這些文檔順序的讀入內(nèi)存,然后檢查這個(gè)文章中是不是含有要查找的關(guān)鍵詞,這樣的話就會(huì)耗費(fèi)非常多的時(shí)間,想想搜索引擎可是在毫秒級(jí)的時(shí)間內(nèi)查找出要搜索的結(jié)果的。這就是由于建立了索引的原因,你可以把索引想象成這樣一種數(shù)據(jù)結(jié)構(gòu),他能夠使你快速的隨機(jī)訪問(wèn)存儲(chǔ)在索引中的關(guān)鍵詞,進(jìn)而找到該關(guān)鍵詞所關(guān)聯(lián)的文檔。

Lucene 采用的是一種稱(chēng)為倒排索引(inverted index)的機(jī)制。反向索引就是說(shuō)我們維護(hù)了一個(gè)詞 / 短語(yǔ)表,對(duì)于這個(gè)表中的每個(gè)詞 / 短語(yǔ),都有一個(gè)鏈表描述了有哪些文檔包含了這個(gè)詞 / 短語(yǔ)。這樣在用戶(hù)輸入查詢(xún)條件的時(shí)候,就能非??斓牡玫剿阉鹘Y(jié)果。我們將在本系列文章的第二部分詳細(xì)介紹 Lucene 的索引機(jī)制,由于 Lucene 提供了簡(jiǎn)單易用的 API,所以即使讀者剛開(kāi)始對(duì)全文本進(jìn)行索引的機(jī)制并不太了解,也可以非常容易的使用 Lucene 對(duì)你的文檔實(shí)現(xiàn)索引。

對(duì)文檔建立好索引后,就可以在這些索引上面進(jìn)行搜索了。搜索引擎首先會(huì)對(duì)搜索的關(guān)鍵詞進(jìn)行解析,然后再在建立好的索引上面進(jìn)行查找,最終返回和用戶(hù)輸入的關(guān)鍵詞相關(guān)聯(lián)的文檔。

我們來(lái)看下如下 2 個(gè)文檔是如何被倒排索引的:
文檔 1(Doc 1): Insight Data Engineering Fellows Program
文檔 2(Doc 2): Insight Data Science Fellows Program

詞項(xiàng)文檔
dataDoc1,Doc2
engineeringDoc1
fellowsDoc1,Doc2
insightDoc1,Doc2
programDoc1,Doc2
scienceDoc2

全文檢索

全文檢索首先將要查詢(xún)的目標(biāo)文檔中的詞提取出來(lái),組成索引,通過(guò)查詢(xún)索引達(dá)到搜索目標(biāo)文檔的目的。這種先建立索引,再對(duì)索引進(jìn)行搜索的過(guò)程就叫全文檢索(Full-text Search)。

全文搜索兩個(gè)最重要的方面是:

相關(guān)性(Relevance)

它是評(píng)價(jià)查詢(xún)與其結(jié)果間的相關(guān)程度,并根據(jù)這種相關(guān)程度對(duì)結(jié)果排名的一種能力,這種計(jì)算方式可以是 TF/IDF 方法(檢索詞頻率/反向文檔頻率)、地理位置鄰近、模糊相似,或其他的某些算法。

分析(Analysis)

它是將文本塊轉(zhuǎn)換為有區(qū)別的、規(guī)范化的token的一個(gè)過(guò)程,目的是為了創(chuàng)建倒排索引以及查詢(xún)倒排索引。

分析主要包含下面的過(guò)程:
1,將一塊文本分成適合于倒排索引的獨(dú)立的詞條(例如遇見(jiàn)空格和標(biāo)點(diǎn)來(lái)分詞)
2,將這些詞條統(tǒng)一化為標(biāo)準(zhǔn)格式(例如小寫(xiě)化Quick,刪除詞條像 a,and,the等無(wú)用詞,增加詞條像jump和leap這種同義詞等)以提高它們的“可搜索性”

結(jié)構(gòu)化搜索

結(jié)構(gòu)化搜索(Structured search)是指有關(guān)探詢(xún)那些具有內(nèi)在結(jié)構(gòu)數(shù)據(jù)的過(guò)程。比如日期、時(shí)間和數(shù)字都是結(jié)構(gòu)化的:它們有精確的格式,我們可以對(duì)這些格式進(jìn)行邏輯操作,例如做大小對(duì)比等。

在結(jié)構(gòu)化查詢(xún)中,我們得到的結(jié)果總是非是即否,要么存于集合之中,要么存在集合之外。結(jié)構(gòu)化查詢(xún)不關(guān)心文件的相關(guān)度或評(píng)分;它簡(jiǎn)單的對(duì)文檔包括或排除處理。

面向文檔

Elasticsearch是面向文檔的,意味著它存儲(chǔ)整個(gè)對(duì)象或文檔,這里的文檔可以指一個(gè)HTML頁(yè)面,一封電子郵件,或者是一個(gè)文本文件。一個(gè) Document 對(duì)象由多個(gè) Field 對(duì)象組成的??梢园岩粋€(gè) Document 對(duì)象想象成數(shù)據(jù)庫(kù)中的一個(gè)記錄,而每個(gè) Field 對(duì)象就是記錄的一個(gè)字段。Elasticsearch不僅存儲(chǔ)文檔,而且索引每個(gè)文檔的內(nèi)容,使之可以被檢索。在Elasticsearch中,我們對(duì)文檔進(jìn)行索引、檢索、排序和過(guò)濾,而不是對(duì)行列數(shù)據(jù)。這是一種完全不同的思考數(shù)據(jù)的方式,也是 Elasticsearch 能支持復(fù)雜全文檢索的原因。

Elasticsearch 使用 JavaScript Object Notation(或者 JSON)作為文檔的序列化格式。JSON 序列化為大多數(shù)編程語(yǔ)言所支持,并且已經(jīng)成為 NoSQL 領(lǐng)域的標(biāo)準(zhǔn)格式。 它簡(jiǎn)單、簡(jiǎn)潔、易于閱讀。

下面這個(gè) JSON 文檔代表了一個(gè)簡(jiǎn)單的 user 對(duì)象:
{
"email":    "john@smith.com",
"first_name": "John",
"last_name":  "Smith",
"join_date": "2014/05/01"
}

海量數(shù)據(jù)近實(shí)時(shí)檢索

雖然 Elasticsearch 中的變更不能立即可見(jiàn),它還是提供了一個(gè)近實(shí)時(shí)的搜索引擎。 Lucene 的變更到磁盤(pán)是一個(gè)代價(jià)昂貴的操作。為了避免在文檔對(duì)查詢(xún)依然有效的時(shí)候,提交變更到磁盤(pán),Elasticsearch 在內(nèi)存緩沖和磁盤(pán)之間提供了一個(gè)文件系統(tǒng)緩存。內(nèi)存緩存 (默認(rèn)情況下) 每 1 秒刷新一次,在文件系統(tǒng)緩存中使用倒排索引創(chuàng)建一個(gè)新的段。這個(gè)段是開(kāi)放的并對(duì)搜索有效。

文件系統(tǒng)緩存可以擁有文件句柄,文件可以是開(kāi)放的、可讀的或者是關(guān)閉的,但是它存在于內(nèi)存之中。因?yàn)樗⑿麻g隔默認(rèn)是 1 秒,變更不能立即可見(jiàn),所以說(shuō)是近實(shí)時(shí)的。因?yàn)?translog 是尚未落盤(pán)的變更持久化記錄,它能有助于 CRUD 操作方面的近實(shí)時(shí)性。對(duì)于每次請(qǐng)求來(lái)說(shuō),在查找相關(guān)段之前,任何最近的變更都能從 translog 搜索到,因此客戶(hù)端可以訪問(wèn)到所有的近實(shí)時(shí)變更。

你可以在創(chuàng)建 / 更新 / 刪除操作后顯式地刷新索引,使變更立即可見(jiàn),但我并不推薦你這樣做,因?yàn)檫@樣會(huì)創(chuàng)建出來(lái)非常多的小 segment 而影響搜索性能。

Elasticsearch節(jié)點(diǎn)類(lèi)型

一個(gè) Elasticsearch實(shí)例是一個(gè)節(jié)點(diǎn),一組節(jié)點(diǎn)組成了集群。Elasticsearch 集群中的節(jié)點(diǎn)可以配置為 3 種不同的角色:

  • 主節(jié)點(diǎn):控制 Elasticsearch 集群,負(fù)責(zé)集群中的操作,比如創(chuàng)建 / 刪除一個(gè)索引,跟蹤集群中的節(jié)點(diǎn),分配分片到節(jié)點(diǎn)。主節(jié)點(diǎn)處理集群的狀態(tài)并廣播到其他節(jié)點(diǎn),并接收其他節(jié)點(diǎn)的確認(rèn)響應(yīng)。每個(gè)節(jié)點(diǎn)都可以通過(guò)設(shè)定配置文件elasticsearch.yml中的node.master屬性為true(默認(rèn)) 成為主節(jié)點(diǎn)。對(duì)于大型的生產(chǎn)集群來(lái)說(shuō),推薦使用一個(gè)專(zhuān)門(mén)的主節(jié)點(diǎn)來(lái)控制集群,該節(jié)點(diǎn)將不處理任何用戶(hù)請(qǐng)求。

  • 數(shù)據(jù)節(jié)點(diǎn):持有數(shù)據(jù)和倒排索引。默認(rèn)情況下,每個(gè)節(jié)點(diǎn)都可以通過(guò)設(shè)定配置文件elasticsearch.yml中的node.data屬性為true(默認(rèn)) 成為數(shù)據(jù)節(jié)點(diǎn)。如果我們要使用一個(gè)專(zhuān)門(mén)的主節(jié)點(diǎn),應(yīng)將其node.data屬性設(shè)置為false。

  • 客戶(hù)端節(jié)點(diǎn):如果我們將node.master屬性和node.data屬性都設(shè)置為false,那么該節(jié)點(diǎn)就是一個(gè)客戶(hù)端節(jié)點(diǎn),扮演一個(gè)負(fù)載均衡的角色,將到來(lái)的請(qǐng)求路由到集群中的各個(gè)節(jié)點(diǎn)。

Elasticsearch集群狀態(tài)

green:所有的主分片和副本分片都正常運(yùn)行。
yellow:所有的主分片都正常運(yùn)行,但不是所有的副本分片都正常運(yùn)行。
red:有主分片沒(méi)能正常運(yùn)行。

Elasticsearch集群選舉

Elasticsearch使用自己開(kāi)發(fā)的zen discovery算法來(lái)選舉集群的master。大概原理如下:
1,對(duì)所有可以成為master的節(jié)點(diǎn)根據(jù)nodeId排序,每次選舉每個(gè)節(jié)點(diǎn)都把自己所知道節(jié)點(diǎn)排一次序,然后選出第一個(gè)(第0位)節(jié)點(diǎn),暫且認(rèn)為它是master節(jié)點(diǎn)。

2,如果對(duì)某個(gè)節(jié)點(diǎn)的投票數(shù)達(dá)到一定的值(可以成為master節(jié)點(diǎn)數(shù)n/2+1)并且該節(jié)點(diǎn)自己也選舉自己,那這個(gè)節(jié)點(diǎn)就是master。否則重新選舉。

3,對(duì)于腦裂問(wèn)題,需要把候選master節(jié)點(diǎn)最小值設(shè)置為可以成為master節(jié)點(diǎn)數(shù)n/2+1(quorum )

Elasticsearch寫(xiě)操作

Elasticsearch分布式搜索引擎介紹

當(dāng)我們發(fā)送索引一個(gè)新文檔的請(qǐng)求到協(xié)調(diào)節(jié)點(diǎn)后,將發(fā)生如下一組操作:

  • Elasticsearch集群中的每個(gè)節(jié)點(diǎn)都包含了改節(jié)點(diǎn)上分片的元數(shù)據(jù)信息。協(xié)調(diào)節(jié)點(diǎn) (默認(rèn))使用文檔ID參與計(jì)算,以便為路由提供合適的分片。Elasticsearch使用MurMurHash4函數(shù)對(duì)文檔ID進(jìn)行哈希,其結(jié)果再對(duì)分片數(shù)量取模,得到的結(jié)果即是索引文檔的分片。
    公式:shard = hash(document_id) % (num_of_primary_shards)
  • 當(dāng)分片所在的節(jié)點(diǎn)接收到來(lái)自協(xié)調(diào)節(jié)點(diǎn)的請(qǐng)求后,會(huì)將該請(qǐng)求寫(xiě)入 translog(我們將在本系列接下來(lái)的文章中講到),并將文檔加入內(nèi)存緩沖。如果請(qǐng)求在主分片上成功處理,該請(qǐng)求會(huì)并行發(fā)送到該分片的副本上。當(dāng)translog 被同步( fsync ) 到全部的主分片及其副本上后,客戶(hù)端才會(huì)收到確認(rèn)通知。
  • 內(nèi)存緩沖會(huì)被周期性刷新 (默認(rèn)是 1 秒),內(nèi)容將被寫(xiě)到文件系統(tǒng)緩存的一個(gè)新段上。雖然這個(gè)段并沒(méi)有被同步 (fsync),但它是開(kāi)放的,內(nèi)容可以被搜索到。
  • 每 30 分鐘,或者當(dāng) translog 很大的時(shí)候,translog 會(huì)被清空,文件系統(tǒng)緩存會(huì)被同步。這個(gè)過(guò)程在 Elasticsearch 中稱(chēng)為沖洗 (flush)。在沖洗過(guò)程中,內(nèi)存中的緩沖將被清除,內(nèi)容被寫(xiě)入一個(gè)新段。段的 fsync 將創(chuàng)建一個(gè)新的提交點(diǎn),并將內(nèi)容刷新到磁盤(pán)。舊的 translog 將被刪除并開(kāi)始一個(gè)新的 translog。

Elasticsearch更新和刪除操作

刪除和更新也都是寫(xiě)操作。但是 Elasticsearch 中的文檔是不可變的,因此不能被刪除或者改動(dòng)以展示其變更。那么,該如何刪除和更新文檔呢?

磁盤(pán)上的每個(gè)段都有一個(gè)相應(yīng)的.del文件。當(dāng)刪除請(qǐng)求發(fā)送后,文檔并沒(méi)有真的被刪除,而是在.del文件中被標(biāo)記為刪除。該文檔依然能匹配查詢(xún),但是會(huì)在結(jié)果中被過(guò)濾掉。當(dāng)段合并 (我們將在本系列接下來(lái)的文章中講到) 時(shí),在.del文件中被標(biāo)記為刪除的文檔將不會(huì)被寫(xiě)入新段。

接下來(lái)我們看更新是如何工作的。在新的文檔被創(chuàng)建時(shí),Elasticsearch 會(huì)為該文檔指定一個(gè)版本號(hào)。當(dāng)執(zhí)行更新時(shí),舊版本的文檔在.del文件中被標(biāo)記為刪除,新版本的文檔被索引到一個(gè)新段。舊版本的文檔依然能匹配查詢(xún),但是會(huì)在結(jié)果中被過(guò)濾掉。

Elasticsearch讀操作

Elasticsearch分布式搜索引擎介紹

讀操作包含 2 部分內(nèi)容:
1,查詢(xún)階段
2,提取階段

查詢(xún)階段

在這個(gè)階段,協(xié)調(diào)節(jié)點(diǎn)會(huì)將查詢(xún)請(qǐng)求路由到索引的全部分片 (主分片或者其副本) 上。每個(gè)分片獨(dú)立執(zhí)行查詢(xún),并為查詢(xún)結(jié)果創(chuàng)建一個(gè)優(yōu)先隊(duì)列,以相關(guān)性得分排序 (我們將在本系列的后續(xù)文章中講到)。全部分片都將匹配文檔的 ID 及其相關(guān)性得分返回給協(xié)調(diào)節(jié)點(diǎn)。協(xié)調(diào)節(jié)點(diǎn)創(chuàng)建一個(gè)優(yōu)先隊(duì)列并對(duì)結(jié)果進(jìn)行全局排序。會(huì)有很多文檔匹配結(jié)果,但是,默認(rèn)情況下,每個(gè)分片只發(fā)送前 10 個(gè)結(jié)果給協(xié)調(diào)節(jié)點(diǎn),協(xié)調(diào)節(jié)點(diǎn)為全部分片上的這些結(jié)果創(chuàng)建優(yōu)先隊(duì)列并返回前 10 個(gè)作為 hit。

提取階段

當(dāng)協(xié)調(diào)節(jié)點(diǎn)在生成的全局有序的文檔列表中,為全部結(jié)果排好序后,它將向包含原始文檔的分片發(fā)起請(qǐng)求。全部分片填充文檔信息并將其返回給協(xié)調(diào)節(jié)點(diǎn)。

Elasticsearch故障轉(zhuǎn)移

故障檢測(cè)原理

master 節(jié)點(diǎn)會(huì) ping所有其他節(jié)點(diǎn),以檢查它們是否還活著;然后所有節(jié)點(diǎn) ping 回去,告訴 master 他們還活著。

故障轉(zhuǎn)移

Elasticsearch分布式搜索引擎介紹
Elasticsearch分布式搜索引擎介紹

  • 我們關(guān)閉一個(gè)主節(jié)點(diǎn)Node1。而集群必須擁有一個(gè)主節(jié)點(diǎn)來(lái)保證正常工作,所以發(fā)生的第一件事情就是選舉一個(gè)新的主節(jié)點(diǎn):Node 2。
    在我們關(guān)閉 Node 1的同時(shí)也失去了主分片1和2,并且在缺失主分片的時(shí)候索引也不能正常工作。如果此時(shí)來(lái)檢查集群的狀況,我們看到的狀態(tài)將會(huì)為 red :不是所有主分片都在正常工作。

  • 我看看到在其它節(jié)點(diǎn)上存在著這兩個(gè)主分片的完整副本, 所以新的主節(jié)點(diǎn)立即將這些分片在 Node 2 和 Node 3 上對(duì)應(yīng)的副本分片提升為主分片, 此時(shí)集群的狀態(tài)將會(huì)為 yellow 。 這個(gè)提升主分片的過(guò)程是瞬間發(fā)生的,如同按下一個(gè)開(kāi)關(guān)一般。為什么我們集群狀態(tài)是yellow而不是green呢?雖然我們擁有所有的三個(gè)主分片,但是同時(shí)設(shè)置了每個(gè)主分片需要對(duì)應(yīng)2份副本分片,而此時(shí)只存在一份副本分片。所以集群不能為 green 的狀態(tài)。(如果我們?cè)O(shè)置的副本為1,則集群狀態(tài)會(huì)變?yōu)間reen)

  • 如果我們重新啟動(dòng) Node 1 ,集群可以將缺失的副本分片再次進(jìn)行分配,那么集群的狀態(tài)也將完全正常,恢復(fù)green狀態(tài)。 如果 Node 1 依然擁有著之前的分片,它將嘗試去重用它們,同時(shí)僅從主分片復(fù)制發(fā)生了修改的數(shù)據(jù)文件。

Elasticsearch優(yōu)化點(diǎn)

1,單節(jié)點(diǎn)內(nèi)存不超過(guò)32G,使用jvm壓縮指針
2,合理設(shè)置索引template,包括settings和mappings
3,使用ssd提升磁盤(pán)io
4,數(shù)據(jù)量大的時(shí)候,使用用from,size來(lái)深層分頁(yè)非常消耗性能,應(yīng)該禁止使用
5,關(guān)閉不使用的索引
6,留一半的系統(tǒng)內(nèi)存供文件系統(tǒng)緩存使用
7,使用bulk寫(xiě)入
8,增大實(shí)時(shí)性要求不高的索引refresh時(shí)間
9,關(guān)閉系統(tǒng)swap
10,整個(gè)集群重啟情況下,延遲分片策略按照需要調(diào)整

整個(gè)集群重啟,恢復(fù)慢問(wèn)題

原因:
1,需要加載所有active狀態(tài)index的translog,保證主shard數(shù)據(jù)完整性主shard恢復(fù)之后,rep從主shard復(fù)制缺少的部分
2,shard過(guò)多

緩解:
1,關(guān)閉不需要的索引
2,重啟前flush集群的translog
3,集群恢復(fù)的時(shí)候,關(guān)閉集群寫(xiě)入,降低集群系統(tǒng)壓力

無(wú)法分配的shard

原因:
1,文件損壞或者文件系統(tǒng)問(wèn)題
2,機(jī)器壓力大導(dǎo)致,allocation分配超時(shí)

工具:
1,可以使用explain API具體查看分配失敗的原因

解決:
1,開(kāi)啟關(guān)閉索引,觸發(fā)重新分配
2,設(shè)置rep為0
3,使用rerouting API,可能有丟數(shù)據(jù)風(fēng)險(xiǎn)

Elasticsearch主要特性

高級(jí)特性

1,支持類(lèi)似SQL查詢(xún)
2,機(jī)器學(xué)習(xí)

最新穩(wěn)定7.x新特性

1,默認(rèn)分片調(diào)整為1
2,無(wú)type索引結(jié)構(gòu)
3,kibana支持暗黑模式
4,使用Term查詢(xún)性能提升3700%
5,對(duì)內(nèi)存管理更加健壯,降低OOM發(fā)生
6,時(shí)間戳支持納秒級(jí)別

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:Elasticsearch分布式搜索引擎介紹-創(chuàng)新互聯(lián)
本文地址:http://muchs.cn/article36/dpshpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作企業(yè)建站、網(wǎng)站設(shè)計(jì)公司搜索引擎優(yōu)化、網(wǎng)站收錄品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化