ES 的一些基本入门概念的介绍

221 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第23天,点击查看活动详情

工作中我们有些情况会用到一些ES 相关的东西,这里就讲一下关于ES 基本的入门级别的概念的介绍,方便快速理解。

ES 的好处

  1. 可以提供分词功能

  2. 对于搜索出来的结果,ES 可以对某些词进行高亮操作

  3. ES 提供快速查询的功能

ES 特点

  1. ES 是Java 语言开发的,所以对Java 的工程有比较良好的支持。

  2. ES 基于Lucene 开发的。(Lucene 是一个架构,叫做全文检索引擎,类似web 中的servlet,相比较ES 就像spring)

  3. ES 基于Restful web 接口对外提供支持。

  4. ES 对增量数据的实时搜索比较快。

ES 的几个基本需要掌握的概念

倒排索引

相关的概念就是正排索引,正排索引是根据key 去找value。我们一般数据库中存的都是完整的内容。也是使用这种模式去查找数据的。

对于倒排索引,是我们把数据导入到ES 中,然后经过ES 处理之后再进行搜索。在导入的过程中,ES 会对数据进行分词;查询的时候,使用数据的分词作为key,然后查找到对应的我们需要的数据。

总结来说,即:正排索引就是根据key 找value;倒排索引就是根据value 去找key,然后找到对应的value。

ES 与关系型数据库的对比

两种存储形势概念对比:

关系型数据库的概念ES 的概念
database(数据库)index(索引库)
table(表)type(类型)(ES7 中已经作废)
row(行)document(文档)
column(列)field(字段)
  • 一个ES 集群包含多个索引(数据库),每个索引包含很多类型(es7 中已经作废),类型中包含很多文档(行),每个文档包含很多字段(列)。

  • 传统db 是通过B+ tree 来加速检索;而ES 使用倒排索引(一种数据结构)来达到快速检索的目的。

  • 倒排索引的概念其实源于生活中常见的场景:需要根据属性值来查找记录。简单来说就是这种索引表中的每一项都包括一个属性值,和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引。

  • 作废type 的原因是为了提高搜索效率(举例来说,查找province = LiaoNing,对于关系型数据库,要到各个表里去查询,然后将查到的数据进行汇总。相比于对于使用ES 的场景,就是需要到各个type(类型)中去查询,然后进行汇总。在使用过程中,开发人员认为这样比较麻烦,并总结出type 的存在好像没什么太大的作用,所以只允许有一张表。因为有一张表就不会出现重复字段了,所以再遇到相同条件的查询查数据就比较方便了。也可以说是,开发人员不想在多个type 中查找这个field,所以就废弃了type。

总结

以上是入门的时候需要理解并掌握的一些ES 的基本的知识,希望读者可以理解并记在脑海里。