[翻譯]ElasticSearch官方文檔

本文翻譯自:https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started.html

前段時(shí)間在做ElasticSearch數(shù)據(jù)分析相關(guān)的工作,一直想翻譯ES的官方文檔,相當(dāng)于ES的入門(mén)文檔吧。

Elasticsearch是一個(gè)高度可擴(kuò)展的開(kāi)源全文搜索和分析引擎。它允許用戶(hù)快速,實(shí)時(shí)地存儲(chǔ),搜索和分析大量數(shù)據(jù)。ES通常用作為具有復(fù)雜的搜索功能和要求的應(yīng)用程序提供的底層引擎/技術(shù)。

官方提供了幾個(gè)示例用例:

  • 你運(yùn)行一個(gè)在線(xiàn)網(wǎng)上商店,讓你的客戶(hù)能夠搜索你銷(xiāo)售的產(chǎn)品。在這種情況下,你可以使用Elasticsearch存儲(chǔ)整個(gè)產(chǎn)品目錄和庫(kù)存,并為其提供搜索和自動(dòng)填充建議。
  • 你要收集日志或事務(wù)數(shù)據(jù),并且你想分析和挖掘此數(shù)據(jù)以查找趨勢(shì),統(tǒng)計(jì)信息,摘要或異常。在這種情況下,你可以使用Logstash(Elasticsearch / Logstash / Kibana堆棧的一部分)來(lái)收集,聚合和解析數(shù)據(jù),然后將Logstash將此數(shù)據(jù)提供給Elasticsearch。一旦數(shù)據(jù)在Elasticsearch中,你可以運(yùn)行搜索和聚合來(lái)挖掘你感興趣的任何信息。
  • 你運(yùn)行一個(gè)價(jià)格提醒平臺(tái),讓價(jià)格優(yōu)惠的客戶(hù)指定一個(gè)規(guī)則,如“我有興趣購(gòu)買(mǎi)一個(gè)特定的電子小工具,如果小工具的價(jià)格在下個(gè)月內(nèi)任何供應(yīng)商的價(jià)格低于$ X,我想收到通知” 。在這種情況下,你可以檢索供應(yīng)商價(jià)格,推動(dòng)他們進(jìn)入彈性搜索,并使用其反向搜索(Percolator)功能來(lái)匹配價(jià)格變動(dòng)與客戶(hù)查詢(xún),并最終一旦發(fā)現(xiàn)匹配,將警報(bào)給客戶(hù)。
  • 你有分析/商業(yè)智能需求,并希望快速調(diào)查,分析,可視化和詢(xún)問(wèn)大量數(shù)據(jù)的特殊問(wèn)題(考慮數(shù)百萬(wàn)或數(shù)十億條記錄)。在這種情況下,你可以使用Elasticsearch存儲(chǔ)數(shù)據(jù),然后使用Kibana(Elasticsearch / Logstash / Kibana堆棧的一部分)構(gòu)建自定義儀表板,以便可視化對(duì)你重要的數(shù)據(jù)的方面。此外,你可以使用Elasticsearch聚合功能對(duì)你的數(shù)據(jù)執(zhí)行復(fù)雜的商業(yè)智能查詢(xún)。

官方文檔的其余部分將引導(dǎo)用戶(hù)完成ES的運(yùn)行過(guò)程,并在其中進(jìn)行查看,并執(zhí)行索引,搜索和修改數(shù)據(jù)等基本操作。而最后,用戶(hù)將了解它的工作原理以及和對(duì)此的啟發(fā),以了解如何使用它來(lái)構(gòu)建復(fù)雜的搜索應(yīng)用程序或從數(shù)據(jù)中挖掘智能。

基本概念

有幾個(gè)概念是Elasticsearch的核心。從一開(kāi)始就理解這些概念將大大有助于緩解學(xué)習(xí)過(guò)程。

近實(shí)時(shí)(NRT)

Elasticsearch是一個(gè)接近實(shí)時(shí)的搜索平臺(tái)。這意味著從你索引一個(gè)文檔到該文檔可搜索的時(shí)間稍微延遲(通常為1秒)。

集群

集群是一個(gè)或多個(gè)節(jié)點(diǎn)(服務(wù)器)的集合,它們共同保存整個(gè)數(shù)據(jù),并在所有節(jié)點(diǎn)之間提供聯(lián)合的索引和搜索功能。集群由唯一的名稱(chēng)標(biāo)識(shí),默認(rèn)情況下是“elasticsearch”。此名稱(chēng)很重要,因?yàn)槿绻?jié)點(diǎn)設(shè)置為通過(guò)其名稱(chēng)加入集群,則節(jié)點(diǎn)只能作為集群的一部分。確保不要在不同環(huán)境中重復(fù)使用相同的集群名稱(chēng),否則可能會(huì)導(dǎo)致節(jié)點(diǎn)加入錯(cuò)誤的集群。例如,你可以對(duì)開(kāi)發(fā),分段和生產(chǎn)集群使用logging-dev,logging-stage和logging-prod。請(qǐng)注意,擁有只有一個(gè)節(jié)點(diǎn)的集群是有效和完美的。此外,你還可以擁有多個(gè)獨(dú)立的群集,每個(gè)群集都有自己獨(dú)特的群集名稱(chēng)。

節(jié)點(diǎn)

節(jié)點(diǎn)是作為集群一部分的單個(gè)服務(wù)器,存儲(chǔ)數(shù)據(jù),并參與集群的索引和搜索功能。就像一個(gè)集群一樣,一個(gè)節(jié)點(diǎn)被一個(gè)名稱(chēng)標(biāo)識(shí),默認(rèn)情況下是一個(gè)隨機(jī)的通用唯一標(biāo)識(shí)符(UUID),它在啟動(dòng)時(shí)分配給節(jié)點(diǎn)。如果你不想要默認(rèn)值,你可以定義所需的任何節(jié)點(diǎn)名稱(chēng)。此名稱(chēng)對(duì)于管理目的很重要,你希望確定網(wǎng)絡(luò)中的哪些服務(wù)器對(duì)應(yīng)于Elasticsearch集群中的哪些節(jié)點(diǎn)。可以將節(jié)點(diǎn)配置為按集群名稱(chēng)加入特定集群。

默認(rèn)情況下,每個(gè)節(jié)點(diǎn)都設(shè)置為加入名為elasticsearch的群集,這意味著如果你在網(wǎng)絡(luò)上啟動(dòng)了多個(gè)節(jié)點(diǎn),并且假設(shè)它們可以相互發(fā)現(xiàn),則它們將自動(dòng)形成并加入名為elasticsearch的單個(gè)群集。

在單個(gè)集群中,你可以擁有很多你所需所需的節(jié)點(diǎn)數(shù)。此外,如果沒(méi)有其他彈性搜索節(jié)點(diǎn)運(yùn)行在你的網(wǎng)絡(luò)上,啟動(dòng)單個(gè)節(jié)點(diǎn)將默認(rèn)形成名為elasticsearch的新的單節(jié)點(diǎn)群集。

索引

索引是具有某種相似特征的文檔的集合。例如,你可以擁有客戶(hù)數(shù)據(jù)的索引,產(chǎn)品目錄的一個(gè)索引,以及訂單數(shù)據(jù)的另一個(gè)索引。索引由名稱(chēng)(必須全部為小寫(xiě))標(biāo)識(shí),該名稱(chēng)用于在針對(duì)其中的文檔執(zhí)行索引,搜索,更新和刪除操作時(shí)引用索引。

在單個(gè)集群中,你可以根據(jù)需要定義任意多的索引。

類(lèi)型

在索引中,你可以定義一個(gè)或多個(gè)類(lèi)型。類(lèi)型是索引的邏輯類(lèi)別/分區(qū),其語(yǔ)義完全取決于你。通常,為具有一組公共字段的文檔定義了一種類(lèi)型。例如,假設(shè)你運(yùn)行一個(gè)博客平臺(tái),并將所有數(shù)據(jù)存儲(chǔ)在單個(gè)索引中。在此索引中,你可以定義用戶(hù)數(shù)據(jù)的類(lèi)型,博客數(shù)據(jù)的另一種類(lèi)型以及注釋數(shù)據(jù)的另一種類(lèi)型。

文檔

文檔是可以索引的基本信息單元。例如,你可以擁有單個(gè)客戶(hù)的文檔,單個(gè)產(chǎn)品的另一個(gè)文檔,以及單個(gè)訂單的另一個(gè)文檔。文檔以JSON表示,這是一種無(wú)處不在的互聯(lián)網(wǎng)數(shù)據(jù)交換格式。在索引/類(lèi)型中,你可以存儲(chǔ)盡可能多的文檔。請(qǐng)注意,雖然文檔物理上位于索引中,但實(shí)際上文檔實(shí)際上必須被索引/分配給索引中的類(lèi)型。

碎片和復(fù)制

索引可能潛在地存儲(chǔ)可能超過(guò)單個(gè)節(jié)點(diǎn)的硬件限制的大量數(shù)據(jù)。例如,占用1TB磁盤(pán)空間的10億個(gè)文檔的單個(gè)索引可能不適合單個(gè)節(jié)點(diǎn)的磁盤(pán),或者可能太慢,無(wú)法單獨(dú)從單個(gè)節(jié)點(diǎn)提供搜索請(qǐng)求。
為了解決這個(gè)問(wèn)題,Elasticsearch提供了將索引細(xì)分為多個(gè)稱(chēng)為碎片的片段的功能。創(chuàng)建索引時(shí),你可以簡(jiǎn)單地定義所需的分片數(shù)。每個(gè)分片本身就是一個(gè)全功能且獨(dú)立的“索引”,可以在集群中的任何節(jié)點(diǎn)上托管。
分片是重要的兩個(gè)主要原因:

  • 它允許你水平分割/擴(kuò)展你的內(nèi)容卷
  • 允許你在分片(潛在地在多個(gè)節(jié)點(diǎn)上)分散和并行操作,從而提高性能/吞吐量

如何將其文檔聚合回搜索請(qǐng)求完全由Elasticsearch管理,對(duì)用戶(hù)來(lái)說(shuō)對(duì)你是透明的。

在可以隨時(shí)預(yù)期故障的網(wǎng)絡(luò)/云環(huán)境中,非常有用,并強(qiáng)烈建議使用故障切換機(jī)制,以防止分片/節(jié)點(diǎn)因?yàn)槟撤N原因脫機(jī)或消失。 為此,Elasticsearch允許你將索引的碎片的一個(gè)或多個(gè)副本復(fù)制到所謂的復(fù)制分片,或簡(jiǎn)寫(xiě)為復(fù)本。

副本是重要的兩個(gè)主要原因:

  • 它提供高可用性,以防分片/節(jié)點(diǎn)失敗。 因此,重要的是要注意,復(fù)制分片從未從與其復(fù)制的原始/主分片在同一節(jié)點(diǎn)上分配。
  • 它允許你擴(kuò)展搜索量/吞吐量,因?yàn)榭梢詫?duì)所有副本并行執(zhí)行搜索。

總而言之,每個(gè)索引可以分成多個(gè)分片。 索引也可以被復(fù)制為零(意味著沒(méi)有副本)或更多次。 一旦復(fù)制,每個(gè)索引將有 主碎片(復(fù)制的原始碎片)和副碎片(主碎片的副本)。 可以在創(chuàng)建索引時(shí)為每個(gè)索引定義碎片和副本的數(shù)量。 創(chuàng)建索引后,你可以隨時(shí)動(dòng)態(tài)更改副本數(shù),但不能更改事后的分片數(shù)。

默認(rèn)情況下,Elasticsearch中的每個(gè)索引都分配了5個(gè)主分片和1個(gè)副本,這意味著如果你的集群中至少有兩個(gè)節(jié)點(diǎn),則索引將具有5個(gè)主分片和5個(gè)復(fù)本分片(1個(gè)完整副本),總共 每個(gè)指數(shù)10個(gè)碎片

注意:每個(gè)彈性搜索碎片都是Lucene索引。 在一個(gè)Lucene索引中可以有最多的文檔數(shù)量。 從LUCENE-5843起,限制為2,147,483,519(= Integer.MAX_VALUE - 128)文檔。 你可以使用_cat / shards API監(jiān)視分片大小。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容