[翻譯]ElasticSearch官方文檔-簡介

本文翻譯自:www.elastic.co/guide/en/el…html

前段時間在作ElasticSearch數據分析相關的工做,一直想翻譯ES的官方文檔,至關於ES的入門文檔吧。服務器

Elasticsearch是一個高度可擴展的開源全文搜索和分析引擎。它容許用戶快速,實時地存儲,搜索和分析大量數據。ES一般用做爲具備複雜的搜索功能和要求的應用程序提供的底層引擎/技術。網絡

官方提供了幾個示例用例:elasticsearch

  • 你運行一個在線網上商店,讓你的客戶可以搜索你銷售的產品。在這種狀況下,你可使用Elasticsearch存儲整個產品目錄和庫存,併爲其提供搜索和自動填充建議。
  • 你要收集日誌或事務數據,而且你想分析和挖掘此數據以查找趨勢,統計信息,摘要或異常。在這種狀況下,你可使用Logstash(Elasticsearch / Logstash / Kibana堆棧的一部分)來收集,聚合和解析數據,而後將Logstash將此數據提供給Elasticsearch。一旦數據在Elasticsearch中,你能夠運行搜索和聚合來挖掘你感興趣的任何信息。
  • 你運行一個價格提醒平臺,讓價格優惠的客戶指定一個規則,如「我有興趣購買一個特定的電子小工具,若是小工具的價格在下個月內任何供應商的價格低於$ X,我想收到通知」 。在這種狀況下,你能夠檢索供應商價格,推進他們進入彈性搜索,並使用其反向搜索(Percolator)功能來匹配價格變更與客戶查詢,並最終一旦發現匹配,將警報給客戶。
  • 你有分析/商業智能需求,並但願快速調查,分析,可視化和詢問大量數據的特殊問題(考慮數百萬或數十億條記錄)。在這種狀況下,你可使用Elasticsearch存儲數據,而後使用Kibana(Elasticsearch / Logstash / Kibana堆棧的一部分)構建自定義儀表板,以即可視化對你重要的數據的方面。此外,你可使用Elasticsearch聚合功能對你的數據執行復雜的商業智能查詢。

官方文檔的其他部分將引導用戶完成ES的運行過程,並在其中進行查看,並執行索引,搜索和修改數據等基本操做。而最後,用戶將瞭解它的工做原理以及和對此的啓發,以瞭解如何使用它來構建複雜的搜索應用程序或從數據中挖掘智能。ide

基本概念

有幾個概念是Elasticsearch的核心。從一開始就理解這些概念將大大有助於緩解學習過程。工具

近實時(NRT)

Elasticsearch是一個接近實時的搜索平臺。這意味着從你索引一個文檔到該文檔可搜索的時間稍微延遲(一般爲1秒)。性能

集羣

集羣是一個或多個節點(服務器)的集合,它們共同保存整個數據,並在全部節點之間提供聯合的索引和搜索功能。集羣由惟一的名稱標識,默認狀況下是「elasticsearch」。此名稱很重要,由於若是節點設置爲經過其名稱加入集羣,則節點只能做爲集羣的一部分。確保不要在不一樣環境中重複使用相同的集羣名稱,不然可能會致使節點加入錯誤的集羣。例如,你能夠對開發,分段和生產集羣使用logging-dev,logging-stage和logging-prod。請注意,擁有隻有一個節點的集羣是有效和完美的。此外,你還能夠擁有多個獨立的羣集,每一個羣集都有本身獨特的羣集名稱。學習

節點

節點是做爲集羣一部分的單個服務器,存儲數據,並參與集羣的索引和搜索功能。就像一個集羣同樣,一個節點被一個名稱標識,默認狀況下是一個隨機的通用惟一標識符(UUID),它在啓動時分配給節點。若是你不想要默認值,你能夠定義所需的任何節點名稱。此名稱對於管理目的很重要,你但願肯定網絡中的哪些服務器對應於Elasticsearch集羣中的哪些節點。能夠將節點配置爲按集羣名稱加入特定集羣。ui

默認狀況下,每一個節點都設置爲加入名爲elasticsearch的羣集,這意味着若是你在網絡上啓動了多個節點,而且假設它們能夠相互發現,則它們將自動造成並加入名爲elasticsearch的單個羣集。翻譯

在單個集羣中,你能夠擁有不少你所需所需的節點數。此外,若是沒有其餘彈性搜索節點運行在你的網絡上,啓動單個節點將默認造成名爲elasticsearch的新的單節點羣集。

索引

索引是具備某種類似特徵的文檔的集合。例如,你能夠擁有客戶數據的索引,產品目錄的一個索引,以及訂單數據的另外一個索引。索引由名稱(必須所有爲小寫)標識,該名稱用於在針對其中的文檔執行索引,搜索,更新和刪除操做時引用索引。

在單個集羣中,你能夠根據須要定義任意多的索引。

類型

在索引中,你能夠定義一個或多個類型。類型是索引的邏輯類別/分區,其語義徹底取決於你。一般,爲具備一組公共字段的文檔定義了一種類型。例如,假設你運行一個博客平臺,並將全部數據存儲在單個索引中。在此索引中,你能夠定義用戶數據的類型,博客數據的另外一種類型以及註釋數據的另外一種類型。

文檔

文檔是能夠索引的基本信息單元。例如,你能夠擁有單個客戶的文檔,單個產品的另外一個文檔,以及單個訂單的另外一個文檔。文檔以JSON表示,這是一種無處不在的互聯網數據交換格式。在索引/類型中,你能夠存儲儘量多的文檔。請注意,雖然文檔物理上位於索引中,但實際上文檔實際上必須被索引/分配給索引中的類型。

碎片和複製

索引可能潛在地存儲可能超過單個節點的硬件限制的大量數據。例如,佔用1TB磁盤空間的10億個文檔的單個索引可能不適合單個節點的磁盤,或者可能太慢,沒法單獨從單個節點提供搜索請求。
爲了解決這個問題,Elasticsearch提供了將索引細分爲多個稱爲碎片的片斷的功能。建立索引時,你能夠簡單地定義所需的分片數。每一個分片自己就是一個全功能且獨立的「索引」,能夠在集羣中的任何節點上託管。
分片是重要的兩個主要緣由:

  • 它容許你水平分割/擴展你的內容卷
  • 容許你在分片(潛在地在多個節點上)分散和並行操做,從而提升性能/吞吐量

如何將其文檔聚合回搜索請求徹底由Elasticsearch管理,對用戶來講對你是透明的。

在能夠隨時預期故障的網絡/雲環境中,很是有用,並強烈建議使用故障切換機制,以防止分片/節點由於某種緣由脫機或消失。 爲此,Elasticsearch容許你將索引的碎片的一個或多個副本複製到所謂的複製分片,或簡寫爲複本。

副本是重要的兩個主要緣由:

  • 它提供高可用性,以防分片/節點失敗。 所以,重要的是要注意,複製分片從未從與其複製的原始/主分片在同一節點上分配。
  • 它容許你擴展搜索量/吞吐量,由於能夠對全部副本並行執行搜索。

總而言之,每一個索引能夠分紅多個分片。 索引也能夠被複製爲零(意味着沒有副本)或更屢次。 一旦複製,每一個索引將有 主碎片(複製的原始碎片)和副碎片(主碎片的副本)。 能夠在建立索引時爲每一個索引定義碎片和副本的數量。 建立索引後,你能夠隨時動態更改副本數,但不能更改過後的分片數。

默認狀況下,Elasticsearch中的每一個索引都分配了5個主分片和1個副本,這意味着若是你的集羣中至少有兩個節點,則索引將具備5個主分片和5個複本分片(1個完整副本),總共 每一個指數10個碎片

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

相關文章
相關標籤/搜索