elasticsearch与关系型数据库之间的比较

数据库搜索存在的问题

用数据库做搜索并不好,主要问题

  1. 每次搜索都要对记录的一长条内容进行扫描
  2. like %关键字% 不能使用到索引
  3. 不能将搜索词拆分开来,很难实现部分匹配,比如杭州医疗保险,如果搜索杭州保险,就搜索不到
  4. 同义词的实现也比较复杂
  5. 要给表中新增一些column,必须用复杂的修改表结构的语法去执行。而且可能对系统代码还有一定的影响。

lucene存在的问题

lucene解决了上述的问题
但是其也存在问题
lucene是部署在单台机器上的,假设磁盘有500个G的空间,如果我们数据量很大,有一个T的数据量,lucene放不下怎么办?

放在多台设备上,分布式,散落在多台机器上。如电商网站前端搜索功能,与多台机器通信的过程,以及数据的管理,都非常麻烦。另外,保证数据不丢失,系统的高可用性上也存在很大的挑战。

这个过程如果我们自己来实现,很麻烦。

elastic search解决方案

在这种情况下elastic search应运而生。每个es节点都封装了lucene,多个es暴露出一个统一的地址。elastic search给我们进行管理多台设备。还实现了副本、故障恢复等机制及性能优化。

所以,elastic search是分布式、近实时、可伸缩的搜索引擎和数据分析引擎
也可以把es当成了一个NoSQL存储引擎,一个可以存储文档类型数据的存储系统,操作里面的document。

关系型数据库与es对比

关系型数据库与es存储对比总结

数据库核心概念elastic search核心概念
tableindex(type)
rowdocument
columnfield
schemamapping
sqldsl

sql与es操作对比总结

sql操作es操作
likematch query
whereterm filter
interms filter多值搜索
match query 或者 should, 加上 and operator 或者 minimum_should_match
betweenrange filter
order bysort 语句
group bybucket
聚合操作metric

操作符对比

sql: and or not
es: bool, must, should, must_not, query+operator(and, or)

总结:

传统关系型数据库和Elasticsearch区别

  • Elasticsearch - Schemaless / 相关性 / 高性能全文搜索
    • json文档方式实现Schemaless,可以对应前面数据库问题的第5条
    • 相关性/高性能全文搜索,可以对应前面数据库问题的1-4条
  • RDBMS - 事务性 / Join
    • 关系型数据库的事务,es不具备
    • 关系型数据库可执行join操作,es不具备
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值