Elasticsearch原理以及基本概念

 

前言:最近项目用到了搜索引擎Elasticsearch,用完了之后总得去了解下人家是怎么回事吧,记一下核心要点。

1、Elasticsearch基本概念

首先ES里面有 “索引”、“类型”、”文档” 三个专有名词。

“索引”:指的存数据的地方,相当于我们熟悉的数据库。

“类型”:指数据结构,相当于数据库里面的表。

“文档”:指具体数据,相当于表里面的单行数据。

 

2、搜索引擎原理——建立反向索引

我们想象一个画面:如果有一本诗词大全摆在面前,我们想去找“静夜思”, 那么我们可以对应诗词大全里面的目录与诗名去找到这首诗的内容“床前明月光,疑是地上霜”。这个时候诗词里面的目录就是这本诗词帮我们做好的普通索引。那么现在有这样一个需求,我想知道有哪些诗词里面包含了“月”这个字,那么我们就只有一页一页的去翻,去匹配,也就是走了全表搜索。

反向索引的出现就能解决这个需求:想象一下,如果再加一个前目录长成这样呢:

床——>静夜思,XXX,XXX...     疑——>静夜思,XXX,XXX...

前——>静夜思,XXX,XXX...     似——>静夜思,XXX,XXX...

明——>静夜思,XXX,XXX...     地——>静夜思,XXX,XXX...

月——>静夜思,XXX,XXX...     上——>静夜思,XXX,XXX...

光——>静夜思,XXX,XXX...     霜——>静夜思,XXX,XXX...

我们是不是就能又走索引了,搜索速度是不是就能大幅度加快!这就是建立的反向索引。

 

3、分词

分词的主要目的就是为了索引优化了,在数据内容中,并不是所有的词都是具有索引意义的。举个例子:我们平时用百度搜索搜“ES的原理”,那么其中“的”这个字,就不存在任何意义。这种词就叫做停顿词。所以在建立反向索引的时候,通常就会去掉这些停顿词,达到优化索引的目的。

 

4、分布式

ES的分布式实现主要是基于lucene,看下图很容易可以明白,ES会挑选一个master节点出来,这个mater会执行一些管理类的工作。然后每一个索引会备份N个(可配置)到其他节点上去。所有的操作,都会在某个节点上执行,然后同步到其他索引节点上去。 其实这也是ElasticSearch作为分布式最基本的一个架构设计。

摘抄一下别人的总结

  • 反向索引又叫倒排索引,是根据文章内容中的关键字建立索引。
  • 搜索引擎原理就是在分词的基础上,建立反向索引。
  • Elasticsearch 在 Lucene 的基础上进行封装,实现了分布式搜索引擎。
  • Elasticsearch 中的索引、类型和文档的概念比较重要,类似于 MySQL 中的数据库、表和行。
  • Elasticsearch 也是 Master-slave 架构,也实现了数据的分片和备份。
  • Elasticsearch 一个典型应用就是 ELK 日志分析系统。

文章参考自:https://developer.51cto.com/art/201904/594615.htmhttps://www.jianshu.com/p/aabe2d352da2

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一个有理想的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值