Fork me on GitHub

主流数据搜索平台介绍

Introduction to mainstream data search platform

Posted by Kaelzhang on July 31, 2018

主流数据搜索平台介绍

本文对主流数据搜索产品或平台Elastic、Solr、Splunk进行介绍、对比及分析,已供企业数据搜索应用决策。首先看看三者之间的关系:

发展趋势

从趋势上来看,Elastic和Splunk上升明显,Elastic更是表现出了非常强劲的势头。老牌产品Solr情况则相反。

Elasticsearch

简介

Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助使用前所未有的速度去处理大规模数据。

它可以用于全文搜索,结构化搜索以及分析,当然也可以将这三者进行组合。

Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一做好的API即可,而不需要了解其背后复杂的Lucene的运行原理。

当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
  • 实时分析的分布式搜索引擎。
  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与ES的RESTful API进行交流。

应用案例

  • 维基百科
  • 英国卫报
  • StackOverflow
  • GitHub
  • Goldman Sachs

优缺点

优点

  • Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
  • Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
  • 处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。
  • Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
  • 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。

缺点

  • 还不够自动(不适合当前新的Index Warmup API)

ELK

ELK是一整套日志分析解决方案,是ElasticSearch,Logstash,Kibana的缩写,分别提供搜索,数据接入和可视化功能,构成了Elastic的应用栈。

Logstash

Logstash 是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。主要特点有:几乎可以访问任何数据,可以和多种外部应用结合,支持弹性扩展。

Kibana

Kibana 是一款基于 Apache 开源协议,使用 JavaScript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。目前最新的版本是 4.3,简称 Kibana 4。

收费价格

Elastic的基本组件均为开源软件,可免费使用。但如果使用X-pack,则其中的一些高级功能需要付费使用。包含安全,多集群,报表,监控等等。

Solr

简介

Solr(读作“solar”)同样也是Apache Lucene项目的开源企业搜索平台。

其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr4 还增加了NoSQL支持。

Solr是用Java编写、运行在Servlet容器(如 Apache Tomcat 或Jetty)的一个独立的全文搜索服务器。 Solr采用了 Lucene Java 搜索库为核心的全文索引和搜索,并具有类似REST的HTTP/XML和JSON的API。Solr强大的外部配置功能使得无需进行Java编码,便可对其进行调整以适应多种类型的应用程序。Solr有一个插件架构,以支持更多的高级定制。

优缺点

优点

  • Solr有一个更大、更成熟的用户、developer和贡献者社区。
  • 支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
  • Solr比较成熟、稳定。
  • 不考虑建索引的同时进行搜索,速度更快。

缺点

  • 建立索引时,搜索效率下降,实时索引搜索效率不高。

其他基于Lucene的开源搜索引擎解决方案

Splunk

简介

Splunk 是机器数据的引擎。使用 Splunk 可收集、索引和利用所有应用程序、服务器和设备生成的快速移动型计算机数据 。 使用 Splunking 处理计算机数据,可让您在几分钟内解决问题和调查安全事件。监视您的端对端基础结构,避免服务性能降低或中断。以较低成本满足合规性要求。关联并分析跨越多个系统的复杂事件。获取新层次的运营可见性以及 IT 和业务智能。

主要功能

Splunk是一个托管的日志文件管理工具,它的主要功能包括:

· 日志聚合功能 · 搜索功能 · 提取意义 · 对结果进行分组,联合,拆分和格式化 · 可视化功能 · 电子邮件提醒功能

优缺点

优点

  • 跨越平台,应用的数据格式支持
  • 快捷的数据定义和转换
  • 简单灵活的搜索语言
  • 快速的报表生成和内容丰富的dashboard

缺点

  • Splunk使用私有的Search Processing Language (SPL) 做日志搜索分析,用户需要使用SPL写脚本程序,使用门槛比较高;
  • Splunk在日志检索阶段抽取日志里的关键字段,检索速度慢,性能较差;
  • Splunk价格较贵。

收费价格

永久许可证: 包括 Splunk企业版的完整功能 期限许可证: 可以支付年费,而不是一次性永久许可证费用。

Splunk企业版是按照数据每日的流量按年或者无限制事件付费,每天1GB的话,每年是2700美元。如果每天的数据量少于500M,可以使用Splunk提供的免费License,只是不能用安全,分布式等高级功能。

对比

Elasticsearch和Solr对比

  • 二者安装都很简单;
  • Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
  • Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;(Elasticsearch需要安装插件ingest-attachment来支持ppt、word、xls及pdf格式)
  • Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
  • Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

Elasticsearch和Splunk对比

  • Elastic不支持搜索时的字段抽取,也就是说Elastic的文档中的所有字段在索引时已经固定了,而Splunk支持在搜索时,动态的抽取新的字段

  • Elastic的搜索是基于评分机制的,搜索的结果有一个打分,而Splunk没有对搜索结果评分

  • Splunk的知识对象可以提供对数据更高级,更灵活的管理能力。

对比小结

当今ELK无疑是最主流的数据搜索产品或平台的解决方案,性价比最高,建议采纳!

参考文献

  1. 日志处理两大生态Splunk和ELK深度对比
  2. 搜索引擎选择: Elasticsearch与Solr
  3. https://www.elastic.co/guide/en/elasticsearch/plugins/current/ingest-attachment.html

  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!