029 Es面試小節


1.大綱

  Es是什么?處理哪種業務邏輯用的多?

  Es類比數據庫是什么?

  對於數據庫的字段、表等,在es中叫什么?

  Es的refresh把數據寫到哪里?

  Es的數據如何變成檢索和聚合索引的?

  Es的flush操作是干什么的?

 

2.Es是什么?處理哪種業務邏輯用的多?

  elasticsearch簡寫es,es是一個高擴展、開源的全文檢索和分析引擎,它可以准實時地快速存儲、搜索、分析海量的數據。

  什么是全文檢索

  全文檢索是指計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現的次數和位置,當用戶查詢時,檢索程序就根據事先建立的索引進行查找,並將查找的結果反饋給用戶的檢索方式。這個過程類似於通過字典中的檢索字表查字的過程。全文搜索搜索引擎數據庫中的數據。

  es的應用場景

  • 一個線上商城系統,用戶需要搜索商城上的商品。 
    在這里你可以用es存儲所有的商品信息和庫存信息,用戶只需要輸入”空調”就可以搜索到他需要搜索到的商品。
  • 一個運行的系統需要收集日志,用這些日志來分析、挖掘從而獲取系統業務未來的趨勢。 
    你可以用logstash(elk中的一個產品,elasticsearch/logstash/kibana)收集、轉換你的日志,並將他們存儲到es中。一旦數據到達es中,就你可以在里面搜索、運行聚合函數等操作來挖掘任何你感興趣的信息。
  • 如果你有想基於大量數據(數百萬甚至數十億的數據)快速調查、分析並且要將分析結果可視化的需求。 
    你可以用es來存儲你的數據,用kibana構建自定義的可視化圖形、報表,為業務決策提供科學的數據依據。

  直白點講,es是一個企業級海量數據的搜索引擎,可以理解為是一個企業級的百度搜索,除了搜索之外,es還可以快速的實現聚合運算。

 

3.Es類比數據庫是什么?

  

 

4.Es的refresh把數據寫到哪里?

  refresh實現的是文檔從內存移到文件系統緩存的過程。

 

5.Es的數據如何變成檢索和聚合索引的?

 

6.Es的flush操作是干什么的?

   刷到磁盤

 

7.整體流程

  
  1. 數據寫入buffer緩沖和translog日志文件中。
    當你寫一條數據document的時候,一方面寫入到mem buffer緩沖中,一方面同時寫入到translog日志文件中。
  2. buffer滿了或者每隔1秒(可配),refresh將mem buffer中的數據生成index segment文件並寫入os cache,此時index segment可被打開以供search查詢讀取,這樣文檔就可以被搜索到了(注意,此時文檔還沒有寫到磁盤上);然后清空mem buffer供后續使用。可見,refresh實現的是文檔從內存移到文件系統緩存的過程。
  3. 重復上兩個步驟,新的segment不斷添加到os cache,mem buffer不斷被清空,而translog的數據不斷增加,隨着時間的推移,translog文件會越來越大。
  4. 當translog長度達到一定程度的時候,會觸發flush操作,否則默認每隔30分鍾也會定時flush,其主要過程:
    4.1. 執行refresh操作將mem buffer中的數據寫入到新的segment並寫入os cache,然后打開本segment以供search使用,最后再次清空mem buffer。
    4.2. 一個commit point被寫入磁盤,這個commit point中標明所有的index segment。
    4.3. filesystem cache(os cache)中緩存的所有的index segment文件被fsync強制刷到磁盤os disk,當index segment被fsync強制刷到磁盤上以后,就會被打開,供查詢使用。
    4.4. translog被清空和刪除,創建一個新的translog。

 

8.知識點

  ES沒有用戶驗證和權限控制

  ES沒有事務的概念,不支持回滾,誤刪不能恢復

     ES免費,完全開源;傳統數據庫部分免費

  ES采用倒排索引,傳統數據庫采用B+樹索引

  ES分布式搜索,傳統數據庫遍歷式搜索

  ES支持分片和復制,從而方便水平分割和擴展,復制保證了es的高可用與高吞吐。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM