日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ElasticSearch 2 (7) - 基本概念

發(fā)布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ElasticSearch 2 (7) - 基本概念 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ElasticSearch 2 (7) - 基本概念

摘要

ElasticSearch的一些基本核心概念,理解這些概念有助于ElasticSearch的學習

  • 準實時NRT(Near Realtime)
  • 集群
  • 節(jié)點
  • 索引
  • 類型
  • 文檔
  • 分片與副本(Shards & Replicas)

版本

elasticsearch版本: elasticsearch-2.2.0

概念

準實時NRT(Near Realtime)

ElasticSearch是一個準實時的搜索平臺。準實時的意思是說它的延遲非常小,從為一個文檔建索引到這個文檔可以搜索出來,只需要1秒的時間。

集群(Cluster)

一個ES集群可以由一個或者多個節(jié)點(nodes or servers)組成。所有這些節(jié)點用來存儲所有的數(shù)據(jù)以及提供聯(lián)合索引,為我們提供跨節(jié)點查詢的能力。一個ES集群的名稱是唯一的,默認情況下為“elasticsearch”。這個名稱非常重要,因為一個節(jié)點(node)會通過這個名稱來判斷是否加入已有的集群。

必須保證在不同環(huán)境下使用不同的集群名稱,否則節(jié)點可能會加入錯誤的集群。比如我們可以為開發(fā)環(huán)境(development)、測試環(huán)境(staging)、產(chǎn)品環(huán)境(production)分別給出不同的集群名稱:logging-dev、logging-staging、logging-prod。

需要注意的是我們也可以使用一個只有一個節(jié)點的集群,或者我們也可以有不同的集群,每個集群都有自己唯一的名稱。

節(jié)點(Node)

一個節(jié)點是一個集群中的一臺服務器,它用來存儲數(shù)據(jù),參與集群的索引以及提供搜索能力。如ES集群,一個節(jié)點也是由它的唯一名稱來標識,默認狀態(tài)下,ES會為在啟動時隨機為一個節(jié)點給定一個以漫威Marvel人物的名字為之命名,當然我們也可以為節(jié)點指定任何我們想指定的名稱。這個名稱對于管理ES集群非常重要,我們用它來定位網(wǎng)絡或集群中的某一節(jié)點。

一個節(jié)點可以通過指定集群名稱讓它加入某個集群,默認情況下,每個節(jié)點都會加入到一個名為“elasticsearch”的集群中,也就是說,當我們在某一網(wǎng)絡下啟動一定數(shù)量的ES節(jié)點時,我們認為他們可以相互發(fā)現(xiàn)同一網(wǎng)絡下的其他節(jié)點。

在單集群下,我們可以有任意數(shù)量的節(jié)點,如果當前網(wǎng)絡下沒有任何ES節(jié)點,那么在啟動節(jié)點后,當前節(jié)點會默認形成一個單節(jié)點集群,名稱為“elasticsearch”。

索引(Index)

一個索引是一組具有相似特性的文檔的集合。例如,可以為客戶數(shù)據(jù)(customer data)建立索引一個索引,也可以為產(chǎn)品目錄(product catalog)建立另一個索引,還可以為訂單數(shù)據(jù)(order data)建立另一個索引。一個索引由它的名稱唯一標識(必須所有字母為小寫字母),這個名稱會在進行索引(indexing)、搜索(search)、修改(update)和刪除(delete)操作的時候使用。

在一個單集群下,我們可以定義任意多的索引。

類型(Type)

在一個索引下,我們可以定義一個或多個類型(types)。一個類型是一個索引邏輯分類或分區(qū)(category/partition),而分類或分區(qū)的劃分方法由我們自己決定。通常情況下,我們會為具有相類似的字段的一組文檔定義類型。比如,如果我們運行一個博客平臺,所有的數(shù)據(jù)都使用同一索引,我們?yōu)橛脩魯?shù)據(jù)定義一種類型,為博客數(shù)據(jù)定義另一種類型,同時為評論數(shù)據(jù)定義另一種類型。

文檔(Document)

一個文檔是一個可以被索引的基本信息單元。比如,一個用戶可以是一個文檔,一個產(chǎn)品可以是一個文檔,一個訂單同樣也可以成為一個文檔。這個文檔以JSON格式表示。

分片與副本(Shards & Replicas)

一個索引可能會存儲大量數(shù)據(jù)從而超過單個節(jié)點硬件的限制。例如,單個索引可能會有上億的文檔占用1TB的磁盤空間,這對于單個節(jié)點來說太大,同時使用單個節(jié)點也會是搜索變慢。

為了解決這個問題,ES提供了一種分片(shard)能力,讓我們將一個索引切分成片。當我們創(chuàng)建一個索引時,我們可以為它指定分片的數(shù)量。每個分片自己都能獨立工作,并且存在與集群的任一節(jié)點中。

分片的重要性主要體現(xiàn)在以下兩個原因:

  • 可以水平分割或擴展內(nèi)容體量。
  • 可以分布式和并行的方式在多個分片上進行操作(多個節(jié)點)從而提高性能和吞吐量。

一個分片是如何散發(fā)的,如何將它的文檔聚合并返回個查詢是對用戶透明的,這個過程完全由ES來管理。

在網(wǎng)絡或云的環(huán)境下,錯誤可以在任何時候發(fā)生,當一個分片或節(jié)點因為某種原因下線或消失時,一個錯誤恢復機制就非常重要。為了解決這個問題,ES讓我們可以為一個索引分片創(chuàng)建一個或多個拷貝,這個拷貝稱作副本分片,簡稱為副本。

副本的重要性主要體現(xiàn)在以下兩個原因:

  • 當一個分片或者節(jié)點出錯時,集群任然可用。正因如此,我們會發(fā)現(xiàn)一個分片副本從來不會在它的原始分片或主分片所在的節(jié)點出現(xiàn)。
  • 橫向擴展搜索體量和吞吐量,因為搜索可以在所有副本上并行執(zhí)行。

總之,每個索引都可以分為多個分片,一個索引也可以被復制到零個或多個副本。一旦發(fā)生復制,每個索引都會有主分片(primary shards)和多個副本分片(replica shards)。分片數(shù)和副本數(shù)可以在一個索引創(chuàng)建時指定。當索引創(chuàng)建以后,可以動態(tài)的改變副本數(shù),但是不能改變分片數(shù)。

默認情況下,每個ES索引都有5個主分片(primary shards)和1個副本(replica),也就是說當我們的集群有兩個節(jié)點時,我們的索引會有5個主分片和另外5個副本分片,也就是說每個索引有總共10個分片。

注意

每個ES分片都是一個Lucene索引。對于單個Lucene索引,文檔的最大數(shù)有一個限制,2,147,483,519。即(= Integer.MAX_VALUE - 128)。可以通過

_cat/shards

來查看。

Each Elasticsearch shard is a Lucene index. There is a maximum number of documents you can have in a single Lucene index. As of LUCENE-5843, the limit is 2,147,483,519 (= Integer.MAX_VALUE - 128) documents. You can monitor shard sizes using the _cat/shards api.

參考

參考來源:

https://www.elastic.co/guide/en/elasticsearch/reference/current/_basic_concepts.html

圖片來源:

https://www.youtube.com/watch?v=LDyxijDEqj4

結(jié)束

總結(jié)

以上是生活随笔為你收集整理的ElasticSearch 2 (7) - 基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。