我是靠谱客的博主 安静冰棍,最近开发中收集的这篇文章主要介绍elasticsearch与关系型数据库之间的比较数据库搜索存在的问题lucene存在的问题elastic search解决方案关系型数据库与es对比总结:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

数据库搜索存在的问题

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

  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不具备

最后

以上就是安静冰棍为你收集整理的elasticsearch与关系型数据库之间的比较数据库搜索存在的问题lucene存在的问题elastic search解决方案关系型数据库与es对比总结:的全部内容,希望文章能够帮你解决elasticsearch与关系型数据库之间的比较数据库搜索存在的问题lucene存在的问题elastic search解决方案关系型数据库与es对比总结:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部