认识Elasticsearch(ES)

目录

1.什么是elasticserach?

2.elasticsearch的发展

3.正向索引和倒排索引

3.1正向索引

3.2倒排索引

4.ES与MySQL的概念对比

文档

索引

概念对比

架构


1.什么是elasticserach?

        elasticsearch是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到我们需要的内容。(https://www.elastic.co/)

        elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK),被广泛应用在日志数据分析、实时监控等领域。

        elasticsearch是elastic stack的核心,负责存储、搜索和分析数据。

2.elasticsearch的发展

        Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。官网地址: https://lucene.apache.orgl 。

Lucene的优势:

  • 易扩展
  • 高性能(基于倒排索引)

缺点:

  • 只限于Java语言开发
  • 学习曲线陡峭(深入学习难度高)
  • 不支持水平扩展

相比与lucene,elasticsearch具备下列优势:

  • ·支持分布式,可水平扩展
  • ·提供Restful接口,可被任何语言调用

3.正向索引和倒排索引

3.1正向索引

在传统数据库中(例如MySQL)采用的是正向索引,如下表(tb_goods):

idgoodNameprice
1小米Max123
2小米充电器566
3华为充电器234
.........

它是根据id建立索引去查找内容的。

如果你想查找这个表中有没有包含充电器的信息,那你是不是无法通过某个字段去精确查找,要通过模糊查询来查找,那你就会写一个SQL语句:“select * fromtb_goods where goodName like '%充电器%'  ”,然后将得到的数据存入结果集返回。

步骤:

  1. 搜索充电器,“select * fromtb_goods where goodName like '%充电器%'  ”
  2. 数据库去表中逐行查找匹配的数据
  3. 将得到的结果存入结果集返回

看上去是不是很简单,很容易找到?这种方法在数据相对少的时候还比较好用,但是当数据多了呢?成千上万行呢?因为它检索是逐行进行的,每次检查一行都要去执行判断,非常消耗性能,而且响应时间长,影响用户体验。

3.2倒排索引

elasticsearch采用了倒排索引:

  • 文档(document):每条数据就是一个文档
  • 词条(term):文档按照语义分成的词语
idgoodNameprice
1小米Max123
2小米充电器566
3华为充电器234
.........

||

词条(term)文档id
小米1,2
Max1
充电器2,3
华为3

倒排索引中,它是根据词条去查找id

比如你想搜索小米充电器,首先经过分词,“小米充电器” 会被拆分为 “小米” 和 “充电器”,然后将这些词拿到词条列表中去查找,得到结果:

  • 小米:文档id(1,2)
  • 充电器:文档id(2,3)

然后存入结果集返回

从过程来看,倒排索引的查找效率非常高

4.ES与MySQL的概念对比

文档

文档(document):可以理解为一个表中的一条行数据

elasticsearch是面向文档存储的,可以是数据库中的一条商品数据,一条订单信息。

文档数据会被序列化为json格式后存储在elasticsearch中

索引

  • 索引(index):相同类型的文档的集合(可以理解一张表)
  • 映射(mapping):索引中文档的字段约束信息,类似于表的结构约束

概念对比

MySQLElasticsearch说明
TableIndex索引(INDEX),就是文档的集合,类似数据库的表
RowDocument文档(Document),就是一条条数据,类似于数据库中的行,但文档只支持JSON格式
ColumnField字段(Field),就是JSON文档中的字段(或者说键),类似于数据库中的列
SchemaMappingMapping(映射)是索引中文档的约束,例如字段类型的约束。类似于数据库中的表结构
SQLDSLDSL是elasticsearch提供restful风格+json风格的请求语句,用来操作elasticsearch,实现CRUD

架构

Mysql:擅长事务类型操作,可以确保数据的安全和一致性。

Elasticsearch:擅长海量数据的搜索、分析、计算。

其他的内容会在本专栏后面继续说明......

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值