专业的编程技术博客社区

网站首页 > 博客文章 正文

ES搜索引擎(es搜索引擎原理详解)

baijin 2024-09-08 01:59:18 博客文章 11 ℃ 0 评论

ElasticSearch的使用场景

  • 电商产品的搜索
  • github搜索项目
  • 搜索引擎的搜索功能
  • 。。。。

ElasticSearch主要功能

ElasticSearch主要是用于存储、搜索、分析数据。

ELK 技术

ElasticSearch结合kibana、Logstash、Beats。也就是ELK,用于数据监控、日志分析等领域。

kibana: 数据可视化;

ElasticSearch: 存储数据、搜索、分析数据。

Logstash 、Beats: 数据抓取。

ElasticSearch底层

ElasticSearch底层是基于Lucene实现。

Lucene是java语言开发的一个类库。

ElasticSearch 核心倒排序

  • 正排序

检索数据都需要通过主键才能获取到完整的数据。

例如:查询数据时,如果通过主键查询,可以直接获取到对应的数据。但是,如果查询的列不是主键列,那就会进行回表,通过主键获取对应的数据。

存在问题:

如果进行字符串的模糊查询,对于数据库来说工作量非常大,尤其是模糊查询某个关键字,一般都会是全表扫描。因此,需要一种新的数据结构来优化这个问题。

  • 倒排序

两个基本概念: 文档(Document),对于关系型数据来说就是一条数据。

词条(Trem),通俗一点的意思就是把一条语句,分割成有意义的词条(组词)。

倒排序的本质就是:根据需要查询的列进行分词,分词完成后,同类的词关联对应的文档ID。查询对应的词组时,就可以获取到对应数据所在位置。


通俗一点来讲,倒排序就是根据词典,关联对应的文档ID,同时,再查下的时候,根据相关词,直接就可以找到对应的文档(数据)。

小结:

正排序:是给字段创建索引。

倒排序:是给词条创建索引,不是给字段。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表