国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Elasticsearch】初識elasticsearch

這篇具有很好參考價值的文章主要介紹了【Elasticsearch】初識elasticsearch。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

初識elasticsearch

1.1.了解ES

1.1.1.elasticsearch的作用

1.1.2.ELK技術棧

1.1.3.elasticsearch和lucene

1.1.4.為什么不是其他搜索技術?

1.1.5.總結

1.2.倒排索引

1.2.1.正向索引

1.2.2.倒排索引

1.2.3.正向和倒排

1.3.es的一些概念

1.3.1.文檔和字段

1.3.2.索引和映射

1.3.3.mysql與elasticsearch

初識elasticsearch

1.1.了解ES

1.1.1.elasticsearch的作用

elasticsearch是一款非常強大的開源搜索引擎,具備非常多強大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容

例如:

  • 在GitHub搜索代碼

    【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

  • 在電商網(wǎng)站搜索商品

    【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

  • 在百度搜索答案

    【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

  • 在打車軟件搜索附近的車

    【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

1.1.2.ELK技術棧

elasticsearch結合kibana、Logstash、Beats,也就是elastic stack(ELK)。被廣泛應用在日志數(shù)據(jù)分析、實時監(jiān)控等領域:

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

而elasticsearch是elastic stack的核心,負責存儲、搜索、分析數(shù)據(jù)。

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

1.1.3.elasticsearch和lucene

elasticsearch底層是基于lucene來實現(xiàn)的。

Lucene是一個Java語言的搜索引擎類庫,是Apache公司的頂級項目,由DougCutting于1999年研發(fā)。官網(wǎng)地址:Apache Lucene - Welcome to Apache Lucene 。

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

elasticsearch的發(fā)展歷史:

  • 2004年Shay Banon基于Lucene開發(fā)了Compass

  • 2010年Shay Banon 重寫了Compass,取名為Elasticsearch。

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

1.1.4.為什么不是其他搜索技術?

目前比較知名的搜索引擎技術排名:

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

雖然在早期,Apache Solr是最主要的搜索引擎技術,但隨著發(fā)展elasticsearch已經(jīng)漸漸超越了Solr,獨占鰲頭:

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

1.1.5.總結

什么是elasticsearch?

  • 一個開源的分布式搜索引擎,可以用來實現(xiàn)搜索、日志統(tǒng)計、分析、系統(tǒng)監(jiān)控等功能

什么是elastic stack(ELK)?

  • 是以elasticsearch為核心的技術棧,包括beats、Logstash、kibana、elasticsearch

什么是Lucene?

  • 是Apache的開源搜索引擎類庫,提供了搜索引擎的核心API

1.2.倒排索引

倒排索引的概念是基于MySQL這樣的正向索引而言的。

1.2.1.正向索引

那么什么是正向索引呢?例如給下表(tb_goods)中的id創(chuàng)建索引:

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

如果是根據(jù)id查詢,那么直接走索引,查詢速度非常快。

但如果是基于title做模糊查詢,只能是逐行掃描數(shù)據(jù),流程如下:

1)用戶搜索數(shù)據(jù),條件是title符合"%手機%"

2)逐行獲取數(shù)據(jù),比如id為1的數(shù)據(jù)

3)判斷數(shù)據(jù)中的title是否符合用戶搜索條件

4)如果符合則放入結果集,不符合則丟棄?;氐讲襟E1

逐行掃描,也就是全表掃描,隨著數(shù)據(jù)量增加,其查詢效率也會越來越低。當數(shù)據(jù)量達到數(shù)百萬時,就是一場災難。

1.2.2.倒排索引

倒排索引中有兩個非常重要的概念:

  • 文檔(Document):用來搜索的數(shù)據(jù),其中的每一條數(shù)據(jù)就是一個文檔。例如一個網(wǎng)頁、一個商品信息

  • 詞條(Term):對文檔數(shù)據(jù)或用戶搜索數(shù)據(jù),利用某種算法分詞,得到的具備含義的詞語就是詞條。例如:我是中國人,就可以分為:我、是、中國人、中國、國人這樣的幾個詞條

創(chuàng)建倒排索引是對正向索引的一種特殊處理,流程如下:

  • 將每一個文檔的數(shù)據(jù)利用算法分詞,得到一個個詞條

  • 創(chuàng)建表,每行數(shù)據(jù)包括詞條、詞條所在文檔id、位置等信息

  • 因為詞條唯一性,可以給詞條創(chuàng)建索引,例如hash表結構索引

如圖:

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

倒排索引的搜索流程如下(以搜索"華為手機"為例):

1)用戶輸入條件"華為手機"進行搜索。

2)對用戶輸入內(nèi)容分詞,得到詞條:華為手機。

3)拿著詞條在倒排索引中查找,可以得到包含詞條的文檔id:1、2、3。

4)拿著文檔id到正向索引中查找具體文檔。

如圖:

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

雖然要先查詢倒排索引,再查詢倒排索引,但是無論是詞條、還是文檔id都建立了索引,查詢速度非???!無需全表掃描。

1.2.3.正向和倒排

那么為什么一個叫做正向索引,一個叫做倒排索引呢?

  • 正向索引是最傳統(tǒng)的,根據(jù)id索引的方式。但根據(jù)詞條查詢時,必須先逐條獲取每個文檔,然后判斷文檔中是否包含所需要的詞條,是根據(jù)文檔找詞條的過程。

  • 倒排索引則相反,是先找到用戶要搜索的詞條,根據(jù)詞條得到保護詞條的文檔的id,然后根據(jù)id獲取文檔。是根據(jù)詞條找文檔的過程。

是不是恰好反過來了?

那么兩者方式的優(yōu)缺點是什么呢?

正向索引

  • 優(yōu)點:

    • 可以給多個字段創(chuàng)建索引

    • 根據(jù)索引字段搜索、排序速度非常快

  • 缺點:

    • 根據(jù)非索引字段,或者索引字段中的部分詞條查找時,只能全表掃描。

倒排索引

  • 優(yōu)點:

    • 根據(jù)詞條搜索、模糊搜索時,速度非???/p>

  • 缺點:

    • 只能給詞條創(chuàng)建索引,而不是字段

    • 無法根據(jù)字段做排序

1.3.es的一些概念

elasticsearch中有很多獨有的概念,與mysql中略有差別,但也有相似之處。

1.3.1.文檔和字段

elasticsearch是面向文檔(Document)存儲的,可以是數(shù)據(jù)庫中的一條商品數(shù)據(jù),一個訂單信息。文檔數(shù)據(jù)會被序列化為json格式后存儲在elasticsearch中:

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

而Json文檔中往往包含很多的字段(Field),類似于數(shù)據(jù)庫中的列。

1.3.2.索引和映射

索引(Index),就是相同類型的文檔的集合。

例如:

  • 所有用戶文檔,就可以組織在一起,稱為用戶的索引;

  • 所有商品的文檔,可以組織在一起,稱為商品的索引;

  • 所有訂單的文檔,可以組織在一起,稱為訂單的索引;

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎

因此,我們可以把索引當做是數(shù)據(jù)庫中的表。

數(shù)據(jù)庫的表會有約束信息,用來定義表的結構、字段的名稱、類型等信息。因此,索引庫中就有映射(mapping),是索引中文檔的字段約束信息,類似表的結構約束。

1.3.3.mysql與elasticsearch

我們統(tǒng)一的把mysql與elasticsearch的概念做一下對比:

MySQL Elasticsearch 說明
Table Index 索引(index),就是文檔的集合,類似數(shù)據(jù)庫的表(table)
Row Document 文檔(Document),就是一條條的數(shù)據(jù),類似數(shù)據(jù)庫中的行(Row),文檔都是JSON格式
Column Field 字段(Field),就是JSON文檔中的字段,類似數(shù)據(jù)庫中的列(Column)
Schema Mapping Mapping(映射)是索引中文檔的約束,例如字段類型約束。類似數(shù)據(jù)庫的表結構(Schema)
SQL DSL DSL是elasticsearch提供的JSON風格的請求語句,用來操作elasticsearch,實現(xiàn)CRUD

是不是說,我們學習了elasticsearch就不再需要mysql了呢?

并不是如此,兩者各自有自己的擅長支出:

  • Mysql:擅長事務類型操作,可以確保數(shù)據(jù)的安全和一致性

  • Elasticsearch:擅長海量數(shù)據(jù)的搜索、分析、計算

因此在企業(yè)中,往往是兩者結合使用:

  • 對安全性要求較高的寫操作,使用mysql實現(xiàn)

  • 對查詢性能要求較高的搜索需求,使用elasticsearch實現(xiàn)

  • 兩者再基于某種方式,實現(xiàn)數(shù)據(jù)的同步,保證一致性

【Elasticsearch】初識elasticsearch,# ⑨、ElasticSeach,elasticsearch,大數(shù)據(jù),搜索引擎文章來源地址http://www.zghlxwxcb.cn/news/detail-546814.html

到了這里,關于【Elasticsearch】初識elasticsearch的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包