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

SpringCloud:初識ES(ElasticSearch)

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

1.1.了解ES(ElasticSearch)

1.1.1.ElasticSearch的作用

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

例如:

  • GitHub搜索代碼

    SpringCloud:初識ES(ElasticSearch)

  • 在百度搜索答案

    SpringCloud:初識ES(ElasticSearch)

1.1.2.ELK技術棧

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

SpringCloud:初識ES(ElasticSearch)

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

SpringCloud:初識ES(ElasticSearch)

1.1.3.ElasticSearch和lucene

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

Lucene是一個Java語言的搜索引擎類庫,是Apache公司的頂級項目,由DougCutting1999年研發(fā)。官網(wǎng)地址:https://lucene.apache.org/ 。

Lucene的優(yōu)勢:

  • 易擴展

  • 高性能(基于排序索引)

Lucene的缺點:

  • 只限于java語言開發(fā)

  • 學習曲線陡峭

  • 不支持水平擴展

ElasticSearch的發(fā)展歷史:

  • 2004Shay Banon基于Lucene開發(fā)了Compass;
  • 2010Shay Banon重寫了Compass,取名為Elasticsearch。

相對于Lucene,ElasticSearch具備下列優(yōu)勢:

  • 支持分布式,可水平擴展

  • 提供Restful接口,可被任何語言調(diào)用

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

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

SpringCloud:初識ES(ElasticSearch)

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

SpringCloud:初識ES(ElasticSearch)

1.1.5.總結

什么是ElasticSearch?

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

什么是elastic stackELK)?

  • 是以ElasticSearch為核心的技術棧,包括beats、Logstashkibana、ElasticSearch。

什么是Lucene

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

1.2.倒排索引

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

1.2.1.正向索引

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

SpringCloud:初識ES(ElasticSearch)

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

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

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

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

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

4)如果符合則放入結果集,不符合則丟棄。回到步驟1

逐行掃描,也就是全表掃描,隨著數(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表結構索引

如圖:

SpringCloud:初識ES(ElasticSearch)

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

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

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

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

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

如圖:

SpringCloud:初識ES(ElasticSearch)

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

1.2.3.正向和倒排

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

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

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

是不是恰好反過來了?

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

正向索引

  • 優(yōu)點:
    • 可以給多個字段創(chuàng)建索引
    • 根據(jù)索引字段搜索、排序速度非???/li>
  • 缺點:
    • 根據(jù)非索引字段,或者索引字段中的部分詞條查找時,只能全表掃描。

倒排索引

  • 優(yōu)點:
    • 根據(jù)詞條搜索、模糊搜索時,速度非常快
  • 缺點:
    • 只能給詞條創(chuàng)建索引,而不是字段
    • 無法根據(jù)字段做排序

1.3.ES的一些概念

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

1.3.1.文檔和字段

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

SpringCloud:初識ES(ElasticSearch)

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

1.3.2.索引和映射

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

例如:

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

SpringCloud:初識ES(ElasticSearch)

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

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

1.3.3.MySQL與ElasticSearch

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

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 DSLElasticSearch提供的JSON風格的請求語句,用來操作ElasticSearch,實現(xiàn)CRUD

是不是說,我們用了ElasticSearch就不再需要MySQL了呢?

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

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

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

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

  • 對安全性要求較高的寫操作,使用MySQL實現(xiàn)
  • 對查詢性能要求較高的搜索需求,使用ElasticSearch實現(xiàn)
  • 兩者再基于某種方式,實現(xiàn)數(shù)據(jù)的同步,保證一致性

SpringCloud:初識ES(ElasticSearch)文章來源地址http://www.zghlxwxcb.cn/news/detail-414198.html

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

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

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

相關文章

  • SpringCloud(十)——ElasticSearch簡單了解(二)DSL查詢語句及RestClient查詢文檔

    SpringCloud(十)——ElasticSearch簡單了解(二)DSL查詢語句及RestClient查詢文檔

    查詢所有 :查詢出所有數(shù)據(jù),一般測試用。例如: match_all 全文檢索查詢 :利用分詞器對用戶輸入內(nèi)容分詞,然后去倒排索引庫中匹配。例如: match_query multi_match_query 精確查詢 :根據(jù)精確詞條值查找數(shù)據(jù),一般是查找keyword、數(shù)值、日期、boolean等類型字段。例如: ids range

    2024年02月10日
    瀏覽(24)
  • elasticsearch(ES)分布式搜索引擎01——(初識ES,索引庫操作和文檔操作,RestClient操作索引庫和文檔)

    elasticsearch(ES)分布式搜索引擎01——(初識ES,索引庫操作和文檔操作,RestClient操作索引庫和文檔)

    1.1.1.elasticsearch的作用 elasticsearch是一款非常強大的開源搜索引擎,具備非常多強大功能,可以幫助我們從海量數(shù)據(jù)中快速找到需要的內(nèi)容 1.1.2.ELK技術棧 elasticsearch結合kibana、Logstash、Beats,也就是elastic stack(ELK)。被廣泛應用在日志數(shù)據(jù)分析、實時監(jiān)控等領域: 而elasticsearc

    2024年02月07日
    瀏覽(49)
  • SpringCloud微服務(三)RabbitMQ、SpringAMQP、elasticsearch、DSL、MQ、ES詳細介紹

    SpringCloud微服務(三)RabbitMQ、SpringAMQP、elasticsearch、DSL、MQ、ES詳細介紹

    目錄 一、初始MQ 同步調(diào)用 異步調(diào)用 什么是MQ 執(zhí)行下面的命令來運行MQ容器: 如果沖突了,可以先查詢 RabbitMQ概述? 常見消息模型 HelloWorld案例 二、SpringAMQP 引入依賴 Work Queue? 消費預取限制 ?編輯?發(fā)布、訂閱 發(fā)布訂閱Fanout Exchange 發(fā)布DirectExchange 發(fā)布訂閱TopicExchange? 消息轉(zhuǎn)

    2024年02月12日
    瀏覽(46)
  • 初識SpringCloud

    初識SpringCloud

    一、軟件架構演進 單體架構 垂直架構 分布式架構 SOA架構 微服務架構 二、微服務架構 2.1 微服務理念 \\\"微服務”一詞源 于 Martin Fowler的名為 Microservices的博文,可以在他的官方博客上找到http://martinfowler.com/articles/microservices.html 微服務是系統(tǒng)架構上的一種設計風格,它的主旨是將

    2024年02月01日
    瀏覽(16)
  • 【SpringCloud入門】-- 初識Eureka注冊中心

    【SpringCloud入門】-- 初識Eureka注冊中心

    目錄 1.SpringCloudEureka簡介 2.什么是CAP原則? 3.注冊中心的概念? 4.SpringCloud其他注冊中心 5.搭建Eureka注冊中心 6.eureka的配置(主要是server,instance,client) 7.eureka集群概念 8.eureka集群搭建 1.SpringCloudEureka簡介 注冊發(fā)現(xiàn)中心Eureka,意為“發(fā)現(xiàn)了”。它是Netflix公司開發(fā)的一款基于RES

    2024年02月09日
    瀏覽(22)
  • ES-初識ES

    ES-初識ES

    Elasticsearch是一個實時 分布式搜索和分析引擎 。它用于全文搜索、結構化搜索、分析。 全文檢索:將非結構化數(shù)據(jù)中的一部分信息提取出來,重新組織,使其變得有一定結構,然后對此有一定結構的數(shù)據(jù)進行搜索,從而達到搜索相對較快的目的。 結構化檢索:我想搜索商品分類為

    2024年02月06日
    瀏覽(11)
  • 【多線程】初識線程,基礎了解

    【多線程】初識線程,基礎了解

    目錄 認識線程 ? ? 概念 ????????什么是線程? ????????為啥要有線程 ????????進程和線程的區(qū)別 ????????Java 的線程 和 操作系統(tǒng)線程 的關系 ? ? 創(chuàng)建線程 ????????1.繼承 Thread 類 ? ? ? ? 2.實現(xiàn) Runnable 接口 ? ? ? ? 3.通過匿名內(nèi)部類方式創(chuàng)建Thread與實現(xiàn)

    2024年02月03日
    瀏覽(16)
  • 初識網(wǎng)絡 --- 淺了解一些基礎概念

    初識網(wǎng)絡 --- 淺了解一些基礎概念

    在每臺計算機獨立的情況下:假設現(xiàn)在有三臺計算機,每臺計算機各持有一個業(yè)務。那么現(xiàn)在有個程序員處理業(yè)務時,如果想要處理業(yè)務1就要操作計算機1,處理業(yè)務2就要操作計算機2,這樣的效率明顯不高 那么如果能將三臺計算機都連接到一臺服務器中,那么三臺計算機就

    2024年02月11日
    瀏覽(13)
  • 初步了解SpringCloud微服務架構

    初步了解SpringCloud微服務架構

    ?作者簡介:大家好,我是Cisyam,熱愛Java后端開發(fā)者,一個想要與大家共同進步的男人???? ??個人主頁:Cisyam-Shark的博客 ??當前專欄: 微服務探索之旅 ?特色專欄: MySQL學習 ??本文內(nèi)容:初步了解SpringCloud微服務架構 ???個人小站 :個人博客,歡迎大家訪問 ??個人

    2024年02月08日
    瀏覽(22)
  • SpringCloud(九)——RabbitMQ簡單了解

    SpringCloud(九)——RabbitMQ簡單了解

    同步通訊 同步通訊就像打電話,小明和小王正在連線,那么小李打進來肯定是打不通的,需要小明打完電話,小李才能進行連線。 那么在我們最初寫代碼時也是這個道理,當我們用戶發(fā)起一個請求時,請求選擇需要的服務,需要的服務再去調(diào)其他服務,當所有流程都做完之

    2024年02月10日
    瀏覽(14)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包