1. 程式人生 > >elasticsearch詳解(二)——初識es

elasticsearch詳解(二)——初識es

基本概念

es裡面有很多核心概念,從一開始瞭解這些概念會更有助於瞭解es。

準實時(NRT,near realtime)

es是一個準實時的搜尋平臺,這就意味當你存一條資料進去到可以搜尋到中間有一定延遲(一般是一秒左右)。

叢集

叢集是存有資料多個節點的集合。叢集用名字來作為唯一標誌,預設為“elasticsearch”。叢集的名字非常重要,因為一個節點只能屬於一個叢集。

節點

es叢集的一部分,節點是用來儲存資料、提供搜尋請求計算的單位。es節點和es叢集一樣都是用名字來作為唯一標識的,es節點預設的名字是uuid。

es節點在一個網段裡面是有自動發現功能的,節點啟動前配置好節點要加入的叢集名稱,es節點就會自動加入叢集。

在一個叢集裡面,你可以加入任意多你想新增的節點。

下面的概念不翻譯成中文了,因為會和傳統資料庫的叫法混淆。

index

索引。索引是一組具有相同特點文件的集合。在es裡面,索引是參與搜尋、更新、刪除的基本單位。
在一個叢集裡面,你可以建立任意多的索引。
在這裡的索引不同於傳統資料庫的索引。

type

型別。在索引裡面,你可以定義多個型別,型別在索引裡面僅僅是一個邏輯層面的分類欄位。在索引裡面,你可以將裡面的所有欄位按照分類從邏輯層面用型別來區分。

document

文件。文件在es裡面是資料儲存的最基本單元。

shard&relicas(分片和副本)

es是一個分散式的系統,分散式就必須要考慮到容災、資料丟失的容錯問題。

shard(分片)

一個index是可以儲存超過一臺節點硬體極限的資料。為了能夠讓更多的資料儲存在es叢集裡面,es能夠讓index打散成多個分片分佈在不同的節點上從而增大index儲存資料的量。這個打散的碎片就是shard分片。

每個index建立的時候都能定義分片的數量,定義好後是不能修改的。

  • 分片可以水平擴充套件index儲存的資料量
  • 分片可以讓計算請求分為多個並行處理。一個分片會有一個執行緒處理一份資料,多個分片會有多個執行緒來處理一個請求。

replication(副本)

分散式系統都會有副本的概念,因為資料分散的分佈在不同的機器上,難免會遇到網路、宕機、硬碟損壞等造成資料損壞、丟失等嚴重情況,所以一份資料會有多個副本保證資料的完整安全性。

這裡副本實際上是分片的副本,資料在節點上以分片資料的形式存在,es通過演算法使每臺機器上的碎片副本儲存在其它機器上,保證在down掉更多機器的情況下依然保證資料不會丟失。

  • 當分片或者幾點down掉之後,副本依然能夠保證資料的完整性,所以分片的副本絕不會和原始分片分佈在一臺機器上。
  • 因為搜尋的時候,也會並行的在分片副本上進行,所以副本會擴大你叢集搜尋的吞吐量,從而加快搜索的速度

建立index的時候可以定義分片和副本的數量,副本的數量可以動態修改,分片的數量一旦定義就不能修改。
總而言之,言而總之,副本和分片數量都對index的搜尋速度有影響。

分片越多,搜尋的執行緒越多,佔用的資源多,自然快,適用於資料量很大的情況。資料量很小分片很多的時候會造成資源的浪費。

副本越多,可以搜尋的檔案越多,會提升搜尋的速度,但是副本多也會對寫入速度造成影響。

所以要根據資料實際使用的場景合理設定副本和分片的數量。

相關推薦

elasticsearch()——初識es

基本概念 es裡面有很多核心概念,從一開始瞭解這些概念會更有助於瞭解es。 準實時(NRT,near realtime) es是一個準實時的搜尋平臺,這就意味當你存一條資料進去到可以搜尋到中間有一定延遲(一般是一秒左右)。 叢集 叢集是存有資料

docker容器初識docker原理及命令

docker容器詳解二:初始docker原理及命令 docker原理 先來理解一下虛擬機器概念,廣義來說,虛擬機器是一種模擬系統,即在軟體層面上通過模擬硬體的輸入和輸出,讓虛擬機器的作業系統得以執行在

ElasticsearchAmbari與第三方軟體的整合(

上文已經簡單介紹了前因,這裡我們就最核心的內容:如何做,進行講解。 二. 整合實現過程詳解 Ambari下服務資源的定義結構如下圖所示: |_ stacks |_ <stack_name> |_ <stack_version>

Elasticsearch增、刪、改、查操作深入()

引言: 對於剛接觸ES的童鞋,經常搞不明白ES的各個概念的含義。尤其對“索引”二字更是與關係型資料庫混淆的不行。本文通過對比關係型資料庫,將ES中常見的增、刪、改、查操作進行圖文呈現。能加深你對ES的理解。同時,也列舉了kibana下的圖形化展示。 ES Restful API GET、PO

spark2.x由淺入深深到底系列六之RDD java api

spark 大數據 javaapi 老湯 rdd package com.twq.javaapi.java7; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.

Linux——vim編輯器

linux——vim編輯器詳解 vim 十六、使用vim編輯多個文件用法: vim FILE1 FILE2 FILE3文件之間切換:末行模式下: :next 切換至下一個文件 :prev 切換至前一個文件 :last 切換至最後一個文件 :first 切換至第

HTTPS協議():TLS/SSL工作原理

-c 基本 公鑰加密 工作方式 通信 使用 sha2 公開 原理 HTTPS協議的主要功能基本都依賴於TLS/SSL協議,本節分析TLS/SSL協議工作原理。 TLS/SSL的功能實現主要依賴於三類基本算法:散列函數 Hash、對稱加密和非對稱加密,其利用非對稱加密實

XSD - 限定

ace enum 正則表達式 normal 開頭 hit 正則表達 個數字 使用 對內容的限定 限定(restriction)用於為 XML 元素或者屬性定義可接受的值。對 XML 元素的限定被稱為 facet。 假如 XML 元素的類型是 "xs:date",而其包含

MyBatis之Mapper XML 文件()-sql和入參

java mybatis sql 參數 mapper sql這個元素可以被用來定義可重用的 SQL 代碼段,可以包含在其他語句中。它可以被靜態地(在加載參數) 參數化. 不同的屬性值通過包含的實例變化. 比如:<sql id="userColumns"> $

AppDomain 【轉】-C#中動態加載和卸載DLL

all created 新版本 odin generic reflect 可能 params 詳細 在C++中加載和卸載DLL是一件很容易的事,LoadLibrary和FreeLibrary讓你能夠輕易的在程序中加載DLL,然後在任何地方 卸載。在C#中我們也能使用Asse

web網站集群之企業級Nginx Web服務優化()

監牢模式 優雅顯示 防盜鏈 非法解析 12 配置Nginx gzip壓縮實現性能優化 100k ---- 1s 90k 100k ---- 5s 10k gzip on; gzip_min_length 1k; gzip_buffers

python中常用模塊

digest cal alt a* bytes byte code 十六 負責 log模塊的講解 1 Python 使用logging模塊記錄日誌涉及四個主要類,使用官方文檔中的概括最為合適: 2 3 logger提供了應用程序可以直接使用的接口API;

# 大型網絡構建-OSPF(特殊區域與虛鏈路)

大型網絡構建大型網絡構建-OSPF詳解二(特殊區域與虛鏈路) 什麽是ospf? OSPF(Open Shortest Path First開放式最短路徑優先)是一個內部網關協議(Interior Gateway Protocol,簡稱IGP),用於在單一自治系統(autonom

django模板templates()

auth authent conf 轉換 decorator 連接 關系 ons VC 1 總體結構 ? Django是MTV結構,即:Model, Template, View Model:定義數據的存儲格式,並且提供了數據庫訪問的API。 View:定義那些數據被顯示,

nginx編譯模塊()

通用 lib modules 兼容 conf 實現 pro 錯誤日誌 變量 nginx1.15.1配置: configure命令支持以下參數: --prefix=path 指定安裝目錄 --sbin-path=path 默認可執行文件的路徑。 --m

Java虛擬機01----初識JVM

日誌 可變 lar 反射 開始 rac ibm java語言 lan 主要內容如下: JVM的概念 JVM發展歷史 JVM種類 Java語言規範 JVM規範 一、JVM的概念: JVM:   Java Virtual Machine,意為Java虛擬機。 虛擬機:   

tomcat服務組件()

logs 所有 servlet容器 force dmi manage 運行 nbsp 訪問 Tomcat的架構:頂級組件: 位於配置層次的頂級,並且彼此間有著嚴格的對應關系 連接器: 連接客戶端(可以是瀏覽器或Web服務器)請求至Servlet容器 容器

mysql系列:sql語句操作-技術流ken

option art sql con student redundant cascade 枚舉 創建索引 1.簡介 本篇博客將詳細講解mysql的一些常用sql語句操作,例如創建數據庫,刪除數據庫,創建表,修改表,刪除表,以及簡單查詢案例。 2.關於mysql數據中的S

可能是最詳細的Android點選事件處理()

上一篇我們主要詳細描述了touch事件在各層的傳遞 本篇文章主要是對比touch在不可滾動和可滾動的ViewGroup事件的傳遞過程 如上圖: - 左圖:是ViewGroup巢狀View,不可滑動 - 右圖:也是ViewGroup(RecyclerView)巢

Java8新特性之Stream

       最近在公司的專案中常用Stream結合Lambda表示式來操作集合,使得專案整體程式碼簡潔和整齊;並且上一章也講了一些關於Stream的常用操作,比如:map()、filter()、concat()、reduce()、max()、min()、