(11)ElasticSearch 的特点

.1 天然分片,天然集群
ES 把数据分成多个 shard,下图中的 P0-P2,多个 shard 可以组成一份完整的数据,
这些 shard 可以分布在集群中的各个机器节点中。随着数据的不断增加,集群可以增加多
个分片,把多个分片放到多个机子上,已达到负载均衡,横向扩展。

在实际运算过程中,每个查询任务提交到某一个节点,该节点必须负责 将数据进行整理
汇聚,再返回给客户端,也就是一个简单的节点上进行 Map 计算,在一个固定的节点上进
Reduces 得到最终结果向客户端返回。

 这种集群分片的机制造就了 elasticsearch 强大的数据容量及运算扩展性。

1.4.2 天然索引
ES 所有数据都是默认进行索引的,这点和 MySQL 正好相反,MySQL 是默认不加索
引,要加索引必须特别说明,ES 只有不加索引才需要说明。
而 ES 使用的是 倒排索引 和 MySQL 的 B+Tree 索引不同。
传统关系性数据库

弊端:
对于传统的关系性数据库对于关键词的查询,只能逐字逐行的匹配,性能非常差。
匹配方式不合理,比如搜索“小密手机”,如果用 like 进行匹配, 根本匹配不到。
但是考虑使用者的用户体验的话,除了完全匹配的记录,还应该显示一部分近似匹
配的记录,至少应该匹配到“手机”。
倒排索引是怎么处理的
全文搜索引擎目前主流的索引技术就是 倒排索引 的方式。
传统的保存数据的方式都是:记录→单词

而倒排索引的保存数据的方式是:单词→记录, 基于分词技术构建 倒排索引 ,每个记录保
存数据时,都不会直接存入数据库。系统先会对数据进行 分词 ,然后以倒排索引结构保存。
如下:

搜索“红海行动” 那么搜索引擎是如何能将两者匹配上的呢?
等到用户搜索的时候,会把搜索的关键词也进行分词,会把“ 红海行动 ”分词分成:
行动 两个词。
这样的话,先用红海进行匹配,得到 id=1 和 id=2 的记录编号,再用行动匹配可以迅
速定位 id 为 1,3 的记录。
那么全文索引通常,还会根据匹配程度进行打分,显然 1 号记录能匹配的次数更多。
所以显示的时候以评分进行排序的话,1 号记录会排到最前面。而 2、3 号记录也可以匹配
到。
索引结构对比

可以看到 Lucene 为倒排索引(Term Dictionary)部分又增加一层 Term Index 结构,
用于快速定位,而这 Term Index 是缓存在内存中的,但 MySQL 的 B+tree 不在内存中,
所以整体来看 ES 速度更快,但同时也更消耗资源(内存、磁盘)。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据开发工程师-宋权

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

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

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

打赏作者

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

抵扣说明:

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

余额充值