精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩大片免费观看视频播放| 婷婷中文字幕综合| 亚洲综合在线播放| 国产麻花豆剧传媒精品mv在线| 男人天堂一区二区| 日韩国产精品久久| 久久国产精品久久久久| 色天使在线视频| 免费一区二区三区四区| 亚洲国产精品一区二区久久| 日韩欧美视频一区二区| 成人毛片在线精品国产| 日本中文一区二区三区| 久久全国免费视频| 999久久久国产| 国产精品zjzjzj在线观看| 欧美在线免费观看亚洲| 黄色激情在线视频| 中文字幕日本在线| 久久综合色婷婷| 97se国产在线视频| 中文字幕在线网站| 宅男噜噜噜66国产日韩在线观看| 爱福利视频一区| 实拍女处破www免费看| 欧美三级一区| 在线电影欧美成精品| 97香蕉久久超级碰碰高清版| 欧美另类69xxxx| 欧美精品中文字幕亚洲专区| 欧美高清视频www夜色资源网| 成人毛片视频网站| 牛牛精品视频在线| 综合电影一区二区三区 | av中文字幕一区| 91久久在线视频| 免费av中文字幕| 一道本一区二区| 欧美精品xxx| 午夜激情福利网| 97精品国产一区二区三区| 亚洲欧美国产日韩天堂区| 偷偷色噜狠狠狠狠的777米奇| 精品91福利视频| 91麻豆精品国产综合久久久久久| 熟妇人妻va精品中文字幕 | 91精品国产自产拍在线观看蜜 | 中文字幕在线观看免费高清| 亚洲人成亚洲精品| 日韩激情在线视频| aaaaa一级片| 欧美亚洲国产日韩| 日韩精品免费综合视频在线播放| 秘密基地免费观看完整版中文| 麻豆久久一区| 日韩美女视频在线| 少妇献身老头系列| 亚洲网址在线观看| 精品国产乱码久久| 在线看黄色的网站| 欧美freesex8一10精品| 日韩国产中文字幕| 亚洲av无码国产精品久久| 午夜a一级毛片亚洲欧洲| 日韩久久精品电影| 国产精品成人一区二区三区电影毛片| 免费短视频成人日韩| 亚洲毛片在线看| 国产毛片久久久久久久| 成人aaaa| 久久香蕉国产线看观看av| 国产av无码专区亚洲av毛网站| 91精品亚洲| 高清视频欧美一级| 国产一级18片视频| 免费观看久久久4p| 91夜夜未满十八勿入爽爽影院| 成 人片 黄 色 大 片| 波多野结衣视频一区| 欧美日韩一区在线播放| 超碰免费97在线观看| 亚洲三级久久久| 欧美乱大交xxxxx潮喷l头像| 美女100%一区| 欧美一区二区三区在| 欧亚乱熟女一区二区在线| 国产成人精品999在线观看| 在线成人免费网站| 久久在线视频精品| 久久欧美肥婆一二区| 国产日韩欧美夫妻视频在线观看| 99久久精品无免国产免费 | 制服丝袜亚洲播放| 性高潮免费视频| 国产一区二区三区网| 久久资源免费视频| 青草视频在线观看免费| 激情综合网最新| 精品91免费| 麻豆传媒视频在线观看| 亚洲综合成人在线视频| 啊啊啊国产视频| 国产精品对白| 久久精品视频导航| 无码人妻aⅴ一区二区三区有奶水 无码免费一区二区三区 | 91麻豆成人精品国产免费网站| 国产福利91精品一区| 欧美一区二区视频17c| 中文字幕中文字幕在线中高清免费版| 欧美日韩另类视频| 91视频福利网| 激情婷婷综合| 97在线视频一区| 国产精品久久久久久免费| 久久只精品国产| 日韩视频一二三| 深夜视频一区二区| 亚洲加勒比久久88色综合| 免费中文字幕日韩| 视频在线观看91| 国产中文一区二区| 在线视频欧美亚洲| 99精品在线观看视频| 青少年xxxxx性开放hg| 欧美色999| 亚洲国产另类 国产精品国产免费| 天美传媒免费在线观看| 首页国产欧美久久| 欧美lavv| 色偷偷偷在线视频播放| 欧美精品一区二区三区高清aⅴ | 色综合久久久久网| 人妻av一区二区| 欧美精品导航| 亚洲综合日韩中文字幕v在线| 99视频在线观看地址| 欧美日韩亚洲视频| 欧美黑人欧美精品刺激| 日韩午夜av| 国产麻豆日韩| 91超碰在线免费| 亚洲的天堂在线中文字幕| 免费人成年激情视频在线观看| 国产一区二区三区久久久| 一本色道久久综合亚洲精品婷婷| 91大神在线观看线路一区| 亚洲欧洲在线看| 亚洲色成人www永久网站| 91在线视频免费观看| 男人揉女人奶房视频60分 | 日本美女久久| 国产一区av在线| jizz国产在线| 中文字幕不卡在线| 九一精品久久久| 亚洲男女av一区二区| 成人网在线观看| 69成人在线| 精品福利一区二区三区| 久久精品免费av| 成人黄色网址在线观看| 成人毛片一区二区| 你懂的一区二区三区| 国产mv久久久| 麻豆传媒视频在线观看| 欧美va在线播放| 日韩高清精品免费观看| www国产精品av| 亚洲国产精品三区| 91成人看片| 成人av中文| 最新中文字幕在线播放| 这里只有精品丝袜| 国产丝袜视频在线观看| 亚洲最大的成人av| 日韩精品卡通动漫网站| 老汉av免费一区二区三区| 粉嫩av一区二区三区天美传媒| 国产suv精品一区| 国产激情999| 手机av在线播放| 亚洲精品国产精品久久清纯直播| 波多野结衣不卡| 亚洲男人的天堂在线aⅴ视频| 99re这里只有| 美女精品一区二区| 97在线国产视频| 欧美一级本道电影免费专区| 91九色蝌蚪嫩草| 丁香六月综合| 欧美激情精品久久久久久久变态 | 久久久久久久久网站| 可以免费看污视频的网站在线| 欧美人xxxx| 日本少妇裸体做爰| 中文字幕在线不卡一区 | 色老板在线视频一区二区| 国产精品久久久久久久久影视| 在线看一级片| 在线观看视频亚洲| 香蕉国产在线视频| 欧美一区二区三区在线视频| 国产黄网在线观看| 亚洲成人av一区| 性生交大片免费全黄| 91毛片在线观看| 亚洲三级在线视频| 日韩 欧美一区二区三区| 韩日视频在线观看| 香蕉视频国产精品 | 亚洲国产一区二区在线观看| 久久av免费一区| 午夜精品在线| 国产欧美一区二区三区在线| 亚洲精品中文字幕| 欧美激情一区二区三区成人| 日本不卡三区| 亚洲天天在线日亚洲洲精| 无码精品视频一区二区三区| 日韩视频一区二区三区| 亚洲最大成人av| 91黄视频在线| 天天做天天爱夜夜爽| 亚洲一级二级在线| 日本黄色片免费观看| 国产精品视频一二三区| 一区二区三区免费在线观看视频| 成人免费高清在线观看| 性久久久久久久久久久久久久| 日韩高清在线观看| 日韩精品视频一区二区在线观看| 在线日韩av| 久久久久久免费看| 红桃视频国产一区| 日本人妻伦在线中文字幕| 亚洲欧美偷拍自拍| av磁力番号网| 一区二区影视| 国产911在线观看| 午夜精品电影| 97超碰国产精品| 欧美日韩精选| 大西瓜av在线| 亚洲视频二区| 成年网站在线免费观看| 亚洲女人av| 日本成人黄色网| 免费在线成人网| 爱爱爱爱免费视频| 国产米奇在线777精品观看| 国产女同无遮挡互慰高潮91| 激情偷乱视频一区二区三区| 中文国产在线观看| 国产成人在线视频网站| 稀缺呦国内精品呦| aaa亚洲精品一二三区| 波多野结衣一本| 久久精品网站免费观看| 少妇视频在线播放| 久久精品国产精品亚洲红杏| 亚洲 欧美 另类人妖| 麻豆传媒一区二区三区| 午夜xxxxx| 成人免费视频一区二区| 亚洲午夜久久久久久久久红桃| 久久精品亚洲国产奇米99 | 亚洲成人免费av| 一区二区三区视频免费看| 欧美性猛交xxxx黑人猛交| 毛片基地在线观看| 欧美日韩视频在线第一区 | 一区二区三区在线免费观看视频| 欧美日韩高清在线播放| 成 人 免费 黄 色| 国产丝袜一区二区| 黄色精品在线观看| 亚洲91精品在线观看| japanese23hdxxxx日韩 | 欧美wwwwww| 性欧美.com| 亚洲天堂偷拍| www日韩在线观看| 国产精品99久久久久久久女警| 国产在线不卡av| 特色特色大片在线| 日本一区福利在线| 亚洲高清视频一区二区| 欧美高清日韩| 欧美激情国产精品日韩| 激情综合色综合久久| 荫蒂被男人添免费视频| 欧美激情一区二区三区不卡| 成人观看免费视频| 日本韩国欧美国产| www久久久com| 中文字幕不卡在线视频极品| 精品一性一色一乱农村| 国产精品人成电影| 乱中年女人伦av一区二区| 一区二区视频在线免费| 99成人精品| 中文字幕在线视频一区二区| 久久久高清一区二区三区| 久久久综合久久久| 欧美人与z0zoxxxx视频| 天堂在线中文字幕| 欧美极品少妇全裸体| 日日夜夜一区| 日产精品久久久一区二区| 狠狠综合久久| 国产xxxxhd| 国产精品高潮久久久久无| 69视频免费在线观看| 日韩你懂的电影在线观看| 国产原创av在线| 2019中文字幕免费视频| 视频一区日韩精品| 亚洲精品中文字幕乱码三区不卡| 在线综合欧美| 日韩成人av一区二区| 亚洲精品视频观看| 6—12呦国产精品| 日韩av在线网站| a毛片不卡免费看片| 999国产视频| 91成人超碰| 中文字幕12页| 国产精品色哟哟| 波多野结衣日韩| 亚洲欧美日韩天堂| 樱花草涩涩www在线播放| 国产精品久久亚洲| 欧美黄色一区| 国产伦精品一区二区三区妓女下载| 国产精品久久久久精k8| 久久久精品毛片| 亚洲奶大毛多的老太婆| 亚洲女色av| 欧美18视频| 日韩精品一区第一页| 亚洲专区区免费| 91黄色免费观看| 高清福利在线观看| 国产精品91免费在线| 国产精品美女久久久久久不卡| 久久久免费视频网站| 91一区二区在线观看| 亚洲精品午夜国产va久久成人| 日韩精品极品毛片系列视频| 蜜桃麻豆av在线| 精品中文字幕一区| 美女视频一区免费观看| 加勒比一区二区| 色av一区二区| porn亚洲| 91精品国产综合久久久久久蜜臀 | 国产网站欧美日韩免费精品在线观看 | 久久偷看各类女兵18女厕嘘嘘| 四虎国产精品免费久久5151| 在线天堂一区av电影| 精品一二三四在线| 国产少妇在线观看| 精品成人a区在线观看| 涩涩涩在线视频| 亚洲精美视频| 国产成人超碰人人澡人人澡| 免费一级片在线观看| 日韩精品中文字幕在线观看 | 欧美日韩一二三四五区| 牛牛澡牛牛爽一区二区| 国产精品香蕉国产| 一区二区蜜桃| 亚洲永久无码7777kkk| 日韩人在线观看| 麻豆tv在线| 国产在线视频欧美一区二区三区| 国产精品婷婷| 在线观看黄网址| 亚洲国内精品视频| 全亚洲第一av番号网站| 91看片淫黄大片91| av男人天堂一区| 亚洲 国产 日韩 欧美| 久久伊人色综合| 久久精品色综合| 国产区二区三区| 亚洲一区二区在线免费观看视频| 青青操视频在线| 91系列在线观看| 新67194成人永久网站| 久久国产精品国语对白| 精品一区精品二区| 最新亚洲国产| 农村妇女精品一二区| 亚洲另类在线制服丝袜| 男女污污视频在线观看| 99久久久精品免费观看国产| 三级久久三级久久久| 国产精品白丝喷水在线观看| 国产视频精品自拍|