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