欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ElasticSearch核心概念

 更新時(shí)間:2022年07月18日 10:49:22   作者:fFee-ops  
Elaticsearch簡稱為es,es是一個(gè)開源的高擴(kuò)展的分布式全文檢索引擎,本文給大家介紹ElasticSearch基礎(chǔ)知識介紹,對ElasticSearch相關(guān)知識感興趣的朋友一起看看吧

簡介

Elasticsearch 是一個(gè)分布式可擴(kuò)展的實(shí)時(shí)搜索和分析引擎,一個(gè)建立在全文搜索引擎 Apache Lucene™ 基礎(chǔ)上的搜索引擎.當(dāng)然 Elasticsearch 并不僅僅是 Lucene 那么簡單,它不僅包括了全文搜索功能,還可以進(jìn)行以下工作:

  • 分布式實(shí)時(shí)文件存儲,并將每一個(gè)字段都編入索引,使其可以被搜索。
  • 實(shí)時(shí)分析的分布式搜索引擎。
  • 可以擴(kuò)展到上百臺服務(wù)器,處理PB級別的結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)。

核心概念

以下為ES和Mysql等的對照關(guān)系

Relational DBElasticsearch
數(shù)據(jù)庫(database)索引(indices)
表(tables)types
行(rows)documents
字段(columns)fields

文檔

就是類似關(guān)系型數(shù)據(jù)庫的一行行的記錄

elasticsearch是面向文檔的,那么就意味著索弓和搜索數(shù)據(jù)的最小單位是文檔。

elasticsearch中,文檔有幾個(gè)重要屬性:

  • 自我包含, 一篇文檔同時(shí)包含字段和對應(yīng)的值,也就是同時(shí)包含key:value !
  • 可以是層次型的
  • 靈活的結(jié)構(gòu),文檔不依賴預(yù)先定義的模式,我們知道關(guān)系型數(shù)據(jù)庫中,要提前定義字段才能使用,在elasticsearch中,對于字段是非常靈活的,有時(shí)候,我們可以忽略該字段,或者動(dòng)態(tài)的添加一個(gè)新的字段。

盡管我們可以隨意的新增或者忽略某個(gè)字段,但是,每個(gè)字段的類型非常重要,比如一一個(gè)年齡字段類型,可以是字符串也可以是整形。因?yàn)閑lasticsearch會(huì)保存字段和類型之間的映射及其他的設(shè)置。這種映射具體到每個(gè)映射的每種類型,這也是為什么在elasticsearch中,類型有時(shí)候也稱為映射類型。

類型

ES7之后Type被舍棄

類型是文檔的邏輯容器,就像關(guān)系型數(shù)據(jù)庫中的一樣。
類型中對于字段的定義稱為映射,比如name映射為字符串類型。

我們說文檔是無模式的 ,它們不需要擁有映射中所定義的所有字段。

但是如果要新增一個(gè)字段,那么elasticsearch的流程是什么?

elasticsearch會(huì)自動(dòng)的將新字段加入映射,但是這個(gè)字段的不確定它是什么類型, elasticsearch就開始猜,如果這個(gè)值是18 ,那么elasticsearch會(huì)認(rèn)為它是整形。但是elasticsearch也可能猜不對 ,所以最安全的方式就是提前定義好所需要的映射,這點(diǎn)跟關(guān)系型數(shù)據(jù)庫殊途同歸了,先定義好字段,然后再使用。

索引

可以淺顯的理解為就是數(shù)據(jù)庫。

索引是映射類型的容器, elasticsearch中的索引是一個(gè)非常大的文檔集合。索引存儲了映射類型的字段和其他設(shè)置。然后它們被存儲到了各個(gè)分片上。

節(jié)點(diǎn)

Node為集群中的單臺節(jié)點(diǎn),其可以為master節(jié)點(diǎn)亦可為slave節(jié)點(diǎn)(節(jié)點(diǎn)屬性由集群內(nèi)部選舉得出)并提供存儲相關(guān)數(shù)據(jù)的功能

分片

在es中,默認(rèn)一個(gè)Es就是一個(gè)集群,一個(gè)集群又至少有一個(gè)節(jié)點(diǎn)。而一個(gè)節(jié)點(diǎn)就是一個(gè)es進(jìn)程,節(jié)點(diǎn)可以有多個(gè)默認(rèn)索引,如果你創(chuàng)建新索引,那么索引將會(huì)由5個(gè)分片( primary shard ,又稱主分片)構(gòu)成,每一個(gè)主分片會(huì)有一個(gè)副本( replica shard ,又稱復(fù)制分片)
分片有兩種類型:primary主片和replica副本,primary用于文檔存儲,Replica shard是Primary Shard的副本,用于冗余數(shù)據(jù)及提高搜索性能。

在這里插入圖片描述

上圖是一個(gè)有3個(gè)節(jié)點(diǎn)的集群,可以看到主分片和對應(yīng)的復(fù)制分片都不會(huì)在同一個(gè)節(jié)點(diǎn)內(nèi),這樣有利于某個(gè)節(jié)點(diǎn)掛掉了,數(shù)據(jù)也不至于丟失。
實(shí)際上, 一個(gè)分片是一個(gè)Lucene索引, 一個(gè)包含倒排索引的文件目錄,倒排索引的結(jié)構(gòu)使得elasticsearch在不掃描全部文檔的情況下,就能告訴你哪些文檔包含特定的關(guān)鍵字

倒排索引

elasticsearch使用的是一種稱為倒排索引的結(jié)構(gòu),采用Lucene倒排索作為底層。這種結(jié)構(gòu)適用于快速的全文搜索,一個(gè)索引由文檔中所有不重復(fù)的列表構(gòu)成,對于每一個(gè)詞,都有一個(gè)包含它的文檔列表。 例如,現(xiàn)在有兩個(gè)文檔,每個(gè)文檔包含如下內(nèi)容:

Study every day, good good up to forever  # 文檔1包含的內(nèi)容
To forever, study every day,good good up  # 文檔2包含的內(nèi)容

為為創(chuàng)建倒排索引,我們首先要將每個(gè)文檔拆分成獨(dú)立的詞(或稱為詞條或者tokens) ,然后創(chuàng)建一個(gè)包含所有不重復(fù)的詞條的排序列表,然后列出每個(gè)詞條出現(xiàn)在哪個(gè)文檔:

在這里插入圖片描述

現(xiàn)在,我們試圖搜索 to forever,只需要查看包含每個(gè)詞條的文檔

在這里插入圖片描述

兩個(gè)文檔都匹配,但是第一個(gè)文檔比第二個(gè)匹配程度更高。如果沒有別的條件,現(xiàn)在,這兩個(gè)包含關(guān)鍵字的文檔都將返回。

再來看一個(gè)示例,比如我們通過博客標(biāo)簽來搜索博客文章。那么倒排索引列表就是這樣的一個(gè)結(jié)構(gòu):

博客文章(原始數(shù)據(jù))博客文章(原始數(shù)據(jù))索引列表(倒排索引)索引列表(倒排索引)
博客文章ID標(biāo)簽標(biāo)簽博客文章ID
1pythonpython1,2,3
2pythonlinux3,4
3linux,python  
4linux

如果要搜索含有python標(biāo)簽的文章,那相對于查找所有原始數(shù)據(jù)而言,查找倒排索引后的數(shù)據(jù)將會(huì)快的多。只需要查看標(biāo)簽這一欄,然后獲取相關(guān)的文章ID即可。完全過濾掉無關(guān)的所有數(shù)據(jù),提高效率!

elasticsearch的索引和Lucene的索引對比
在elasticsearch中,索引(庫)這個(gè)詞被頻繁使用,這就是術(shù)語的使用。在elasticsearch中 ,索引被分為多個(gè)分片,每份分片是一個(gè)Lucene的索引。所以一個(gè)elasticsearch索引是由多 個(gè)Lucene索引組成的。

到此這篇關(guān)于ElasticSearch簡介的文章就介紹到這了,更多相關(guān)ElasticSearch簡介內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Xshell?6安裝和使用教程詳解

    Xshell?6安裝和使用教程詳解

    這篇文章主要介紹了Xshell?6安裝和使用教程,Xshell 6支持Windows 平臺遠(yuǎn)程協(xié)議Telnet、Rlogin、SSH1/SSH2 PKCS#11、SFTP、Serial,本文給大家講解的非常詳細(xì)需要的朋友可以參考下
    2022-11-11
  • Base64 編碼介紹、Base64編碼轉(zhuǎn)換原理與算法

    Base64 編碼介紹、Base64編碼轉(zhuǎn)換原理與算法

    Base64編碼,是我們程序開發(fā)中經(jīng)常使用到的編碼方法。它是一種基于用64個(gè)可打印字符來表示二進(jìn)制數(shù)據(jù)的表示方法,需要的朋友可以參考下
    2016-06-06
  • session的存儲方式和配置方法介紹

    session的存儲方式和配置方法介紹

    Session又稱為會(huì)話狀態(tài),是Web系統(tǒng)中最常用的狀態(tài),用于維護(hù)和當(dāng)前瀏覽器實(shí)例相關(guān)的一些信息。我們控制用戶去權(quán)限中經(jīng)常用到Session來存儲用戶狀態(tài),這篇文章會(huì)講下Session的存儲方式、在web.config中如何配置Session、Session的生命周期等內(nèi)容
    2012-05-05
  • 解讀Base64編碼中為什么會(huì)有等號(=)問題

    解讀Base64編碼中為什么會(huì)有等號(=)問題

    這篇文章主要介紹了解讀Base64編碼中為什么會(huì)有等號(=)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 字符編碼詳解(基礎(chǔ))

    字符編碼詳解(基礎(chǔ))

    字符編碼問題, 對于一個(gè)在偉大天朝的程序員來說, 幾乎不可能遇不到, 從我剛開始接觸Coding到現(xiàn)在, 亂碼, 編碼轉(zhuǎn)換問題就好像一直沒有停息過.
    2009-09-09
  • git合并部分提交的實(shí)現(xiàn)

    git合并部分提交的實(shí)現(xiàn)

    在進(jìn)行Git合并某一次提交時(shí),有時(shí)會(huì)出現(xiàn)沖突,本文主要介紹了git合并部分提交的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • 解決VIM顯示utf-8文件亂碼問題

    解決VIM顯示utf-8文件亂碼問題

    在Vim中,有四個(gè)與編碼有關(guān)的選項(xiàng),它們是:fileencodings、fileencoding、encoding和termencoding。下面,我們詳細(xì)介紹一下這四個(gè)選項(xiàng)的含義和作用,感興趣的朋友一起看看吧
    2020-02-02
  • 使用selenium自動(dòng)控制瀏覽器找不到Chromedriver問題

    使用selenium自動(dòng)控制瀏覽器找不到Chromedriver問題

    這篇文章主要介紹了ChromeDriver安裝與配置問題的解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Studio 3T無限試用的問題及解決方法

    Studio 3T無限試用的問題及解決方法

    Studio 3T是一款非常不錯(cuò)的MongoDB數(shù)據(jù)庫GUI連接工具,由原MongoChef改名升級,可以為大家更優(yōu)質(zhì)的網(wǎng)頁設(shè)計(jì)、代碼輸入、編程管理等功能,這篇文章給大家分享關(guān)于Studio3T試用時(shí)間到期的問題,如何用腳本重新設(shè)置時(shí)間的失敗問題,感興趣的朋友一起看看吧
    2022-08-08
  • 程序員 代碼是從頭編還是使用框架好呢?

    程序員 代碼是從頭編還是使用框架好呢?

    為什么框架發(fā)展得越來越好,因?yàn)樵絹碓蕉嗟某绦騿T選擇使用框架。當(dāng)處于實(shí)際的項(xiàng)目開發(fā)中,程序員就會(huì)發(fā)現(xiàn)項(xiàng)目周期短,使用框架可以最有效地節(jié)約時(shí)間。如果完全從頭開始編程,使用時(shí)間太多不說,對程序員的個(gè)人編碼水平也提出了很高的要求
    2017-08-08

最新評論