使用Elasticsearch相比标准SQL查询有哪些应用场景?

150

我刚刚开始使用Elasticsearch,发现它的主要用途之一是在大数据集上进行搜索时具有可扩展性,但除此之外,在什么情况下您想要使用它,而不仅仅是使用传统关系型数据库管理系统创建SQL查询?


3
鼓励编辑问题以改善其质量(例如,澄清、添加额外信息等)。但是,将问题编辑成不同的问题,从而使一个或多个答案无效,违反了 Stack Overflow 的政策。你的编辑做到了这点。政策规定具有编辑权限的其他用户应该主动撤销此类更改,我在这里已经这样做了。如果你的新问题符合主题,鼓励你提出一个新问题,可以附加此问题的链接以提供额外的上下文。 - Makyen
1
明白了。意图是正确的,只是执行有误。 - James Drinkard
2个回答

93

有两个主要的 Elasticsearch 使用案例:

  1. 文本搜索

当传统的 RDBMS 数据库性能不佳(配置差、充当黑匣子、性能不佳)时,您需要 Elasticsearch 来进行大量文本搜索。Elasticsearch 是高度可定制的,可通过插件扩展。您可以快速构建强大的搜索功能而无需过多的知识。

  1. 日志和分析

另一个使用 Elasticsearch 的边缘案例是许多人使用 Elasticsearch 存储来自各种来源的日志(以将其集中化),以便他们可以分析并理解这些日志。在这种情况下,Kibana 显得非常方便。它让您连接到 Elasticsearch 集群并立即创建可视化图形。例如,Loggly 是使用 Elasticsearch 和 Kibana 构建的。

请记住,您不希望将 Elasticsearch 用作主要数据存储。原因在此:ElasticSearch 作为主要数据存储的可靠性与写入丢失、数据可用性等因素有关

更新

我觉得第二部分不再是边缘案例,实际上 Elastic 公司在过去一年中做得非常好。随着当前的 DevOps 运动、CI/CD 管道、来自各种来源的指标数量不断增加,ELK 成为基础设施监视的事实标准,它不再只是一个分布式 RESTful 文本搜索引擎。它有一组惊人的产品:

  • Logstash(大量数据输入)
  • Beats
    • Filebeat
    • Metricbeat
    • Packetbeat
    • Winlogbeat
  • Kibana
    • Graph
    • Timelion
  • X-Pack(高级版)
    • 警报
    • 报告
    • 安全性
    • 机器学习
  • 跨数据中心指标
  • 一个由社区构建的生态系统正在围绕ELK堆栈不断发展,其中一些值得一提的功能有:

    • ElastAlert
    • Search Guard

    为什么不将Elastic Search限制用作标准系统(如POS或ERP)的查询引擎,因为我不理解为什么公司要花费大量精力将数据从SQL转换为Elastic Search进行分析。 - pannu
    在旧版本中不建议使用,现在我不确定。 - Evaldas Buinauskas
    你说,由于配置不佳,关系型数据库的性能表现并不理想。 这是否意味着,通过良好的配置,您可以在文本搜索(模糊搜索)方面与ElasticSearch一样出色? - Legends
    2
    @Legends 我真正意思是配置选项很差。我的经验仅限于MSSQL全文搜索,而MSSQL中的设置数量无法与Elasticsearch相比。在关系型数据库管理系统中,文本搜索只是一个功能,而在Elasticsearch中,它是本质。 - Evaldas Buinauskas
    我在网上搜索了很多,但是找不到任何具体的信息。应用程序需要多少数据(仅大约)才能考虑迁移到ElasticSearch?因为维护分布式系统是复杂的。例如,在mongodb中搜索评论文本的良好索引。(我不是在谈论ES的高级功能,而是纯文本搜索) - Iván Sánchez

    36

    补充上面的回答,日志记录仍然是主要用例之一,加上搜索,但现在指标和分析变得更加重要。

    我认为这篇文章总结了市场上推动大数据新用例的变化。 关于开源数据库,你真正需要知道的一切

    随着Web 2.0的出现,静态网页变得动态化, 社交媒体已经无处不在。每个人都在发推文、发布信息、博客、视频博客、分享照片、聊天和评论。物联网(IoT)正在崛起——一个快速增长的连接设备网络,这些设备收集和交换数据,例如传感器和智能设备。这里有一些很好的例子。

    总而言之, 这产生了大量新数据,企业希望吸收并使用这些数据以保持领先地位,提供诸如产品推荐和更好的客户体验等功能。这些数据可以进行分析,寻找模式,应用于欺诈检测和行为分析等应用程序。许多新数据是非结构化的,这意味着它不能整齐地存储在表格数据库中。

    想象一下设计一个数据库来存储你的杂货购物数据,包括你喜欢什么、你有多频繁地购买它、你是否更喜欢牛奶还是奶油。需要新类型的数据库来存储新数据,并且它们需要是非关系型的,最好是低成本的。有点耳熟能详了吧?非关系型的就是NoSQL,低成本的就是开源。

    我与Elasticsearch架构师之一交谈时发现,公司中80%的Elasticsearch处理的数据是非结构化的,而20%是结构化的。 正是非结构化数据让公司寻找罕见或不寻常的数据模式。 他们还在使用Elasticsearch监测数据模式。例如,主要零售商正在使用Elasticsearch进行实时跟踪,以确保在支付日为人们提供适当的现金支持。

    根据我们的搜索使用案例经验,我们不仅使用模糊搜索,而且还演变成了自动完成和快速搜索。从我看到的情况来看,一旦您开始使用Elasticsearch,您就会演变成其他补充现有功能的用例。现在,我们已经将Elasticsearch建立为公司的模糊搜索引擎,我们现在有其他团队正在研究日志分析和指标。

    以下是一些更深入探讨此主题的资源:


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接