ES 搜索概述

以前面试,面试官总喜欢为这类问题,虽然有时候我们没有接触使用过这个东西,但是如果能掌握一些,还是比较好的

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. 管理集群、节点、索引数据及元数据
  4. 执行高级搜索操作,例如paging、filtering、scripting、faceting、aggregations及其它操作

执行查询分为2个阶段

分散阶段 和 合并阶段

分散阶段是向所查询的索引中的所有shard发起执行查询的过程

合并阶段是将各shard返回的结果合并、排序并响应给客户端的过程

向es发起查询的2个方式:
1、通过RESTful request api 传递查询参数 quert-string

2、通过发送 RESTful request body,也称作JSON 格式

一个分析器通过需要三个组件构成
字符过滤器,分词器,分词过滤器

原文地址:https://www.cnblogs.com/fangdada/p/14803285.html