ES(elasticsearch) 搜索概述


在我們的面試過程中,面試官總喜歡問這類問題,雖然有時候我們接觸的比較少,甚至沒有接觸過這個東西,但是如果能掌握一些基礎,還是比較好的,能讓自己加分(雖然有些面試官自己也不知道)。

 

ES 英文:(elasticsearch) 

它是一種分布式全文搜索引擎,基於Lucene(全文搜索框架)開發而來。

 

優勢:

  • 分布式實時文件存儲,每個字段皆能索引
  • 集群,可擴展(理論上無上限)
  • 高度集成的服務(RESTful風格的API,各語言客戶端)
  • 易學易用

 

舊的數據查詢查詢流程
關系數據庫(比如Mysql) -> 數據庫DB -> 表TABLE -> 行ROW -> 列Column
Elasticsearch -> 索引庫Indices -> 類型Types -> 文檔Documents -> 字段Fields

 

ES集群可以包含多個索引(數據庫),每個索引庫中可以包含多個類型的表,每個類型包含多個文檔,然后每個文檔包含多個字段

 

DSL查詢與過濾

由ES提供豐富且靈活的查詢語言叫做DSL查詢(Query DSL)

 

索引過程分為如下幾個步驟

  1. 獲取內容
  2. 建立文檔
  3. 文檔分析
  4. 文檔索引


搜索組件主要組成部分

  1. 用戶搜索界面
  2. 建立查詢
  3. 搜索查詢
  4. 展現結果

 

ElasticSearch 工作原理
ElasticSearch(簡稱ES)是一個基於Lucene構建的開源、分布式、RESTful的全文本搜索引擎

索引Index - 類似庫

類型Type - 類似表

文檔Document

映射Mapping

集群Cluster

  是一個或多個節點的集合

節點Node

分片Share 和 副本Replica

 

ElasticSearch提供了易用但功能強大的RESTful API以用於與集群進行交互,這些API大體可分為如下四類:

  1. 檢查集群、節點、索引等健康與否,以及獲取其相關狀態與統計信息
  2. 管理集群、節點、索引數據及元數據
  3. 執行CRUD(增刪查改)操作;
  4. 執行高級搜索操作,例如paging、filtering、scripting、faceting、aggregations及其它操作

 

執行查詢分為2個階段

  分散階段 和 合並階段

分散階段是向所查詢的索引中的所有shard發起執行查詢的過程

合並階段是將各share返回的結果合並、排序並響應給客戶端的過程

向es發起查詢的2個方式:
1、通過RESTful request api 傳遞查詢參數 quert-string

2、通過發送 RESTful request body,也稱作JSON 格式

 

一個分析器通過需要三個組件構成
字符過濾器,分詞器,分詞過濾器


免責聲明!

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



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