精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

ElasticSearch 搜索原理,原來可以這樣輕松上手

數據庫 MySQL
Elasticsearch 特別擅長處理各種各樣的數據類型,不管是文本、數字,還是其他稀奇古怪的玩意兒,它就像一個超級收納大師,把所有的數據都放在合適的位置,還能讓你輕松地找到它們。

提到Elasticsearch,做業務開發的同學是不是既陌生又熟悉呢?

圖片

說陌生,是因為它并不跟MySQL一樣,天天拿來做存儲查詢數據用;

說熟悉,我們排查問題查詢的ELK日志,文本分詞檢索等場景,好像又離不開它....

Elasticsearch 特別擅長處理各種各樣的數據類型,不管是文本、數字,還是其他稀奇古怪的玩意兒,它就像一個超級收納大師,把所有的數據都放在合適的位置,還能讓你輕松地找到它們。

今天,我們就來一起揭開它搜索原理的神秘面紗吧~

圖片圖片

摘要

先自上而下,后自底向上的介紹ElasticSearch的底層工作原理,試圖回答以下問題:

  • 為什么我的搜索 **foo-bar** 無法匹配foo-bar?
  • 為什么增加更多的文件會壓縮索引(Index)?
  • 為什么ElasticSearch占用很多內存?

圖解ElasticSearch

云上的集群

圖片圖片

集群里的盒子

云里面的每個白色正方形的盒子代表一個節點——Node。

圖片圖片

節點之間

在一個或者多個節點之間,多個綠色小方塊組合在一起形成一個ElasticSearch的索引。

圖片圖片

索引里的小方塊

在一個索引下,分布在多個節點里的綠色小方塊稱為分片——Shard。

圖片圖片

Shard=Lucene Index

一個ElasticSearch的Shard本質上是一個Lucene Index。

圖片圖片

Lucene是一個Full Text 搜索庫(也有很多其他形式的搜索庫),ElasticSearch是建立在Lucene之上的。接下來的故事要說的大部分內容實際上是ElasticSearch如何基于Lucene工作的。

圖解Lucene

Mini索引——segment

在Lucene里面有很多小的segment,我們可以把它們看成Lucene內部的mini-index。

圖片圖片

Segment內部

有著許多數據結構:

  • Inverted Index
  • Stored Fields
  • Document Values
  • Cache

圖片圖片

最最重要的Inverted Index

圖片圖片

Inverted Index主要包括兩部分:

  1. 一個有序的數據字典Dictionary(包括單詞Term和它出現的頻率)。
  2. 與單詞Term對應的Postings(即存在這個單詞的文件)。

當我們搜索的時候,首先將搜索的內容分解,然后在字典里找到對應Term,從而查找到與搜索相關的文件內容。

圖片圖片

查詢“the fury”

圖片圖片

自動補全(AutoCompletion-Prefix)

如果想要查找以字母“c”開頭的字母,可以簡單的通過二分查找(Binary Search)在Inverted Index表中找到例如“choice”、“coming”這樣的詞(Term)。

圖片圖片

昂貴的查找

如果想要查找所有包含“our”字母的單詞,那么系統會掃描整個Inverted Index,這是非常昂貴的。

圖片圖片

在此種情況下,如果想要做優化,那么我們面對的問題是如何生成合適的Term。

問題的轉化

圖片圖片

對于以上諸如此類的問題,我們可能會有幾種可行的解決方案:

  • * suffix -> xiffus *如果我們想以后綴作為搜索條件,可以為Term做反向處理。
  • (60.6384, 6.5017) -> u4u8gyykk對于GEO位置信息,可以將它轉換為GEO Hash。
  • 123 -> {1-hundreds, 12-tens, 123}對于簡單的數字,可以為它生成多重形式的Term。

解決拼寫錯誤

一個Python庫為單詞生成了一個包含錯誤拼寫信息的樹形狀態機,解決拼寫錯誤的問題。

圖片

Stored Field字段查找

當我們想要查找包含某個特定標題內容的文件時,Inverted Index就不能很好的解決這個問題,所以Lucene提供了另外一種數據結構Stored Fields來解決這個問題。本質上,Stored Fields是一個簡單的鍵值對key-value。默認情況下,ElasticSearch會存儲整個文件的JSON source。

圖片圖片

Document Values為了排序,聚合

即使這樣,我們發現以上結構仍然無法解決諸如:排序、聚合、facet,因為我們可能會要讀取大量不需要的信息。

所以,另一種數據結構解決了此種問題:Document Values。這種結構本質上就是一個列式的存儲,它高度優化了具有相同類型的數據的存儲結構。

圖片圖片

為了提高效率,ElasticSearch可以將索引下某一個Document Value全部讀取到內存中進行操作,這大大提升訪問速度,但是也同時會消耗掉大量的內存空間。

總之,這些數據結構Inverted Index、Stored Fields、Document Values及其緩存,都在segment內部。

搜索發生時

搜索時,Lucene會搜索所有的segment,然后將每個segment的搜索結果返回,最后合并呈現給客戶。

Lucene的一些特性使得這個過程非常重要:

  • Segments是不可變的(immutable)

         Delete?當刪除發生時,Lucene做的只是將其標志位置為刪除,但是文件還是會在它原來的地方,不會發生改變。

         Update?所以對于更新來說,本質上它做的工作是:先刪除,然后重新索引(Re-index)。

  • 隨處可見的壓縮Lucene非常擅長壓縮數據,基本上所有教科書上的壓縮方式,都能在Lucene中找到。
  • 緩存所有的所有Lucene也會將所有的信息做緩存,這大大提高了它的查詢效率。

緩存的故事

當ElasticSearch索引一個文件的時候,會為文件建立相應的緩存,并且會定期(每秒)刷新這些數據,然后這些文件就可以被搜索到。

圖片圖片

隨著時間的增加,我們會有很多segments。

圖片圖片

所以ElasticSearch會將這些segment合并,在這個過程中,segment會最終被刪除掉。

圖片圖片

這就是為什么增加文件可能會使索引所占空間變小,它會引起merge,從而可能會有更多的壓縮。

舉個栗子

有兩個segment將會merge。

這兩個segment最終會被刪除,然后合并成一個新的segment。

圖片圖片

這時,這個新的segment在緩存中處于cold狀態,但是大多數segment仍然保持不變,處于warm狀態。

以上場景經常在Lucene Index內部發生的。

圖片圖片

在Shard中搜索

ElasticSearch從Shard中搜索的過程與Lucene Segment中搜索的過程類似。

圖片圖片

與在Lucene Segment中搜索不同的是,Shard可能是分布在不同Node上的,所以在搜索與返回結果時,所有的信息都會通過網絡傳輸。

需要注意的是:

1次搜索查找2個shard = 2次分別搜索shard

圖片圖片

對于日志文件的處理

當我們想搜索特定日期產生的日志時,通過根據時間戳對日志文件進行分塊與索引,會極大提高搜索效率。

當我們想要刪除舊的數據時也非常方便,只需刪除老的索引即可。

在上種情況下,每個index有兩個shards。

如何Scale

圖片圖片

shard不會進行更進一步的拆分,但是shard可能會被轉移到不同節點上。

圖片圖片

所以,如果當集群節點壓力增長到一定的程度,我們可能會考慮增加新的節點,這就會要求我們對所有數據進行重新索引,這是我們不太希望看到的,所以我們需要在規劃的時候就考慮清楚,如何去平衡足夠多的節點與不足節點之間的關系。

節點分配與Shard優化

  • 為更重要的數據索引節點,分配性能更好的機器
  • 確保每個shard都有副本信息replica

圖片圖片

路由Routing

每個節點,每個都存留一份路由表,所以當請求到任何一個節點時,ElasticSearch都有能力將請求轉發到期望節點的shard進一步處理。

圖片圖片

一個真實的請求

圖片圖片

Query

圖片圖片

Query有一個類型filtered,以及一個multi_match的查詢。

Aggregation

圖片圖片

根據作者進行聚合,得到top10的hits的top10作者的信息。

請求分發

這個請求可能被分發到集群里的任意一個節點。

圖片圖片

上帝節點

圖片圖片

這時這個節點就成為當前請求的協調者(Coordinator),它決定:

  • 根據索引信息,判斷請求會被路由到哪個核心節點
  • 以及哪個副本是可用的
  • 等等

路由

圖片圖片

在真實搜索之前

ElasticSearch 會將Query轉換成Lucene Query。

圖片圖片

然后在所有的segment中執行計算。

圖片圖片

對于Filter條件本身也會有緩存。

圖片圖片

但queries不會被緩存,所以如果相同的Query重復執行,應用程序自己需要做緩存。

圖片圖片

所以,

  • filters可以在任何時候使用
  • query只有在需要score的時候才使用

返回

搜索結束之后,結果會沿著下行的路徑向上逐層返回。

圖片圖片

圖片圖片

圖片圖片

圖片圖片

圖片圖片

責任編輯:武曉燕 來源: 架構精進之路
相關推薦

2013-09-18 10:44:01

搜狗輸入法詞語

2021-11-30 08:04:32

AIIT運維

2023-12-11 13:57:00

RFM模型激勵機制

2020-12-28 08:36:30

C語言編程泛型

2018-01-22 10:52:43

前端CSS追蹤用戶

2024-12-30 00:24:46

2024-09-04 08:27:15

2025-05-28 08:25:00

JavaScript代碼開發

2009-12-17 16:50:54

Ruby簡單編寫

2021-07-09 05:52:36

架構開發緩存

2014-06-24 09:41:56

Android Stu教程

2020-04-23 15:59:04

SpringKafka集群

2023-06-13 08:00:57

ChatGPT語言模型

2016-09-29 17:48:32

騰訊云語音質檢珍愛網

2022-05-09 08:37:43

IO模型Java

2023-10-08 08:51:14

搜索與查詢結構化查詢

2013-06-18 17:23:35

移動互聯百度SiteApp建造WebApp

2010-01-13 18:28:21

VB.NET歷史菜單

2024-03-26 00:00:01

2021-09-03 11:26:39

分詞器ElasticSear
點贊
收藏

51CTO技術棧公眾號

亚洲欧美999| 亚洲视频在线一区二区| 91精品国产免费久久久久久| 国产精品探花一区二区在线观看| 中文字幕在线直播| 国产精品视频第一区| 亚洲伊人第一页| 日韩无码精品一区二区三区| 国产一区三区在线播放| 日韩视频免费观看高清完整版 | 精品国产伦一区二区三区| 亚洲国产网站| 色狠狠久久aa北条麻妃| 亚洲国产精品狼友在线观看| 日韩高清中文字幕一区二区| 亚洲黄色av一区| 欧美日韩一区在线观看视频| 国产成人麻豆精品午夜在线| 日本中文字幕一区二区有限公司| 九色成人免费视频| 性猛交ⅹxxx富婆video| 9l亚洲国产成人精品一区二三 | 久久精品视频在线免费观看| 成人激情在线播放| 五月天婷婷激情| 欧美激情视频一区二区三区在线播放 | 99久久99久久精品国产片果冻| 国产精品入口尤物| 国内精品福利视频| 韩国自拍一区| 久久精品99久久久久久久久| 一本色道久久综合亚洲精品图片| 国产精品亚洲一区二区在线观看 | 凹凸国产熟女精品视频| 成人免费网站在线观看视频| 久久久午夜精品理论片中文字幕| 99porn视频在线| 中文字幕精品无码亚| 亚洲乱码久久| 欧美精品激情在线| 外国一级黄色片| 国产精品久久久久久久| 亚洲最新视频在线| 亚洲人成人无码网www国产| 成人精品毛片| 欧美va亚洲va| 亚洲热在线视频| 91精品国产自产观看在线| 在线免费观看日本一区| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 亚洲欧洲日本在线| 欧美日韩一区二区三区在线观看免| 成人毛片在线免费观看| 国产精品一区二区免费不卡| 91啪国产在线| 国产精品高潮呻吟AV无码| 久久成人免费网| 国产精品视频xxxx| 在线视频免费观看一区| 免费av成人在线| 国产精品视频区| 做爰视频毛片视频| 美女久久久精品| 国产精品一区二区3区| 国产在线观看第一页| 热久久久久久久| 国产精品一区久久| 一级特黄色大片| 狠狠v欧美v日韩v亚洲ⅴ| 成人精品aaaa网站| 精品国精品国产自在久不卡| 国产一区二区三区在线观看精品 | 国产色片在线观看| 国产91丝袜在线播放0| 成人国产一区二区| 懂色av一区二区三区四区| 成人av高清在线| 国语精品免费视频| 日本不卡视频在线播放| 国产成年人视频网站| 国产精品久久久久久久久久辛辛| 91精品国产综合久久久蜜臀粉嫩 | 婷婷综合六月| 欧美性生活一区| 999热精品视频| 国产精品色呦| 亚洲香蕉在线观看| 尤物在线免费视频| 日韩天堂av| 国产精品1区2区在线观看| 亚洲视频久久久| 成人一区二区三区视频在线观看| 精品国产一区二区三区麻豆小说 | 亚洲 欧美 日韩 国产综合 在线| 涩涩视频在线播放| 欧美日韩高清影院| 黑森林av导航| 亚洲精品小区久久久久久| 少妇高潮 亚洲精品| 久久久久亚洲天堂| 视频一区二区三区中文字幕| 亚洲综合在线小说| 你懂的在线观看视频网站| 综合中文字幕亚洲| 黄网站欧美内射| 国产私拍福利精品视频二区| 欧美大胆人体bbbb| 国产一区二区三区四区在线| 亚洲激情亚洲| 国产在线精品播放| 日本在线丨区| 亚洲精品免费视频| www.四虎成人| 2020国产精品极品色在线观看| 欧美综合视频| 884aa四虎影成人精品一区| 扒开伸进免费视频| 99热国内精品| 欧美与黑人午夜性猛交久久久| 国产情侣自拍小视频| 国产午夜精品久久久久久久| 黄色一级片黄色| 久久久久久久性潮| 亚洲免费伊人电影在线观看av| 欧美日韩在线国产| 奇米777欧美一区二区| 久久99导航| 色噜噜狠狠狠综合欧洲色8| 色悠悠久久综合| 俄罗斯黄色录像| 一区二区中文字| 国产精品美女久久久久久免费| 亚洲欧洲视频在线观看| 亚洲精品亚洲人成人网 | 日韩国产第一页| 久久久999| 精品亚洲欧美日韩| 精品精品导航| 日本伊人精品一区二区三区观看方式| 91九色蝌蚪嫩草| 毛片激情在线观看| 欧美视频完全免费看| 免费在线观看你懂的| 99精品国产在热久久婷婷| 成人午夜激情免费视频| 99青草视频在线播放视| 91黄色免费网站| 波多野结衣办公室33分钟| 亚洲精品女人| 国产一区二区精品在线| 国产精品探花在线| 日韩精品一区二区三区中文精品| 国产极品国产极品| 国产精品白丝jk白祙喷水网站| 亚洲最新免费视频| 91福利精品在线观看| 夜夜躁日日躁狠狠久久88av| 蜜臀99久久精品久久久久小说| 久久影音资源网| 91传媒久久久| 亚洲成aⅴ人片久久青草影院| 午夜免费在线观看精品视频| 欧美亚洲精品在线观看| 亚洲3atv精品一区二区三区| 催眠调教后宫乱淫校园| 在线观看视频免费一区二区三区| 国产高清在线精品一区二区三区| 婷婷在线播放| 精品福利一区二区三区| 精品成人免费视频| 91麻豆免费观看| 国产视频一区二区三区在线播放| 久久大综合网| 91久久国产精品| 日本高清成人vr专区| 精品国内二区三区| 欧美激情黑白配| 国产丝袜欧美中文另类| 成年人三级黄色片| 欧美国产91| 国产日韩亚洲精品| 二吊插入一穴一区二区| www.亚洲一区| 午夜免费福利视频| 欧美性xxxx在线播放| 中文字幕在线观看免费高清| 精品一区二区三区不卡 | 在线视频国内自拍亚洲视频| 国产伦精品一区二区三区视频女| 国产一区视频导航| 免费 成 人 黄 色| 成人羞羞网站| 成人区精品一区二区| 国产精品迅雷| 不卡毛片在线看| 西西人体44www大胆无码| 欧美在线免费观看视频| caoporn91| 91在线视频网址| 日日干夜夜操s8| 亚洲高清免费| 亚洲精品9999| 国产一区在线电影| 国产精品视频久久久久| 超碰在线公开| 一道本无吗dⅴd在线播放一区| 精品国产亚洲AV| 欧美午夜精品一区| 国产精品2020| 亚洲欧美综合色| 国产 xxxx| 国产一区激情在线| 欧美日韩在线免费播放| 女同性一区二区三区人了人一| 欧美韩国日本精品一区二区三区| 精品国模一区二区三区欧美| 欧美在线一区二区三区四| fc2ppv国产精品久久| 亚洲午夜精品视频| 人妻偷人精品一区二区三区| 欧美人xxxx| 潘金莲一级淫片aaaaaa播放| 亚洲一区精品在线| 久久久久久视频| 中文字幕第一区二区| 玖玖爱在线精品视频| 国产一区二区三区四| 九九热在线免费| 在线综合亚洲| 国产日本在线播放| 欧美成熟视频| 老司机av福利| 成人精品亚洲| 日本10禁啪啪无遮挡免费一区二区| 国产精品任我爽爆在线播放| 999精品在线观看| 久久久久久亚洲精品美女| 国产免费一区视频观看免费 | 天天综合天天综合色| 欧美日韩人妻精品一区二区三区| 欧美韩国日本不卡| 国产免费看av| 久久久一区二区三区| 最近中文字幕无免费| 成人综合在线观看| 国产男女无遮挡猛进猛出| 激情综合色播五月| 日韩av片免费观看| 精品一区在线看| 久国产精品视频| 国产在线播放一区| 亚洲国产日韩在线一区| 国内一区二区在线| 久久久九九九热| 国产美女一区二区三区| 超碰在线超碰在线| 国产a区久久久| youjizz.com国产| 91在线码无精品| 成人免费av片| 久久久久国产成人精品亚洲午夜| 91视频免费观看网站| 久久精品一区二区三区不卡| аⅴ天堂中文在线网| 国产精品国产自产拍高清av王其| 蜜桃av.com| 亚洲乱码精品一二三四区日韩在线| 国产67194| 亚洲午夜久久久久| 亚洲天堂一区在线观看| 欧美主播一区二区三区美女| 在线观看日韩一区二区| 91精品国产综合久久精品 | 极品少妇一区二区三区精品视频 | 糖心vlog在线免费观看| 欧美二区不卡| 国内自拍在线观看| 日韩vs国产vs欧美| 国产又粗又猛大又黄又爽| 成人av一区二区三区| 色无极影院亚洲| 国产精品美女久久久久久| 欧美日韩在线观看成人| 好吊成人免视频| 在线观看中文字幕av| 欧美一区二区精品在线| 天天综合天天综合| 在线观看不卡av| 四季久久免费一区二区三区四区| 97超碰色婷婷| 国产精品第一国产精品| 99在线视频首页| 国内精品久久久久久久影视简单| 一区不卡字幕| 国产欧美高清| 手机免费看av网站| 99久久国产综合精品色伊 | 欧美日韩中文字幕一区二区三区| 公共露出暴露狂另类av| 国产欧美日本| www.色就是色.com| 久久先锋资源网| 好吊色视频在线观看| 色婷婷综合久久久久中文| 国产视频一二三四区| 亚洲人成在线播放| 毛片在线导航| 国产伊人精品在线| 啪啪激情综合网| 欧美亚洲视频一区| 水蜜桃久久夜色精品一区的特点 | 日韩中文字幕在线不卡| 先锋亚洲精品| 日韩大尺度视频| 国产精品传媒入口麻豆| 51国产偷自视频区视频| 精品久久久网站| 八戒八戒神马在线电影| 国产精品99久久久久久www| 丁香综合av| 一本二本三本亚洲码| 日本色综合中文字幕| 五月开心播播网| 亚洲自拍偷拍欧美| 国产又粗又大又黄| 国产一区二区久久精品| 中文字幕不卡三区视频| 国产欧美丝袜| 欧美色图麻豆| 999久久久精品视频| 国产精品你懂的| 日韩乱码一区二区三区| 精品呦交小u女在线| a国产在线视频| 国产成人免费电影| 欧美日本二区| 日韩高清在线一区二区| 国产精品国产三级国产有无不卡| 97人妻一区二区精品视频| 国产视频久久久久| 蜜桃视频在线网站| 狠狠色综合欧美激情| 在线观看日韩av电影| 国产精品成人99一区无码| 亚洲午夜久久久| 蜜桃91麻豆精品一二三区| 欧美国产日韩一区二区| 中文字幕一区日韩精品| 欧美另类videosbestsex日本| 狠狠色伊人亚洲综合成人| 欧美成人777| 欧美一级欧美一级在线播放| 国产写真视频在线观看| 亚洲精品日韩激情在线电影| 亚洲最新色图| 激情小说欧美色图| 亚洲一区二区三区在线播放| 亚洲老妇色熟女老太| 亚州国产精品久久久| 人人网欧美视频| 国产一区视频免费观看| 中文字幕免费一区| 91成品人影院| 美女扒开尿口让男人操亚洲视频网站| 成人久久精品| 欧美a级免费视频| av电影天堂一区二区在线观看| 亚洲 欧美 成人| 一本色道久久综合狠狠躁篇怎么玩 | 成年人视频在线免费| 久久精品一区四区| 亚洲一卡二卡在线观看| 久久99久久99精品中文字幕| 国产精品一线| 粉嫩虎白女毛片人体| 亚洲视频小说图片| 你懂的网站在线| 国产成人精品一区二区在线| 日韩精品诱惑一区?区三区| 欧美一级特黄aaa| 亚洲成人av一区二区三区| 国产中文字幕在线视频| 91欧美精品午夜性色福利在线| 最新日韩av| 欧美精品日韩在线| 日韩免费视频一区| 小视频免费在线观看| 中文字幕乱码一区二区三区| 成人一级片在线观看| 蜜臀尤物一区二区三区直播| 久久中文字幕视频| 日韩成人动漫在线观看| 手机在线成人免费视频| 亚洲国产精品影院| 成人p站proumb入口| 99r国产精品视频| 老司机精品视频网站| 真实国产乱子伦对白在线| 一道本无吗dⅴd在线播放一区| 亚洲一区网址|