solr和elasticsearch

lucence简介

Lucene是apache软件基金会一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

lucence特点

  • 独立于应用平台的索引文件:Lucene定义了一套以8位字节为基础的索引文件格式,使得兼容系统或者不同平台的应用能够共享建立的索引文件。
  • 基于倒排索引的基础上实现分块索引:在传统全文检索引擎的倒排索引的基础上,实现了分块索引,能够针对新的文件建立小文件索引,提升索引速度。然后通过与原有索引的合并,达到优化的目的。
  • 独立于语言和文件格式的文本分析接口:索引器通过接受Token流完成索引文件的创立,用户扩展新的语言和文件格式,只需要实现文本分析的接口。
  • 强大的查询引擎:用户无需自己编写代码即可使系统可获得强大的查询能力,Lucene的查询实现中默认实现了布尔操作、模糊查询、分组查询等等。
  • 优秀的面向对象的系统架构:使得对于Lucene扩展的学习难度降低,方便扩充新功能。

solr简介

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。

Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

优点

  • Solr有更大更成熟的社区,比较成熟稳定
  • 不考虑建索引、对已有数据搜索,速度更快
  • 支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式

缺点

  • 相对成熟,势头不如elasticsearch,目前elasticsearch排第一,solr排第二
  • 依赖于zookeeper进行分布管理,安装稍微麻烦
  • 建立索引时,搜索效率下降,实时索引搜索效率不高
  • 随着数据量增加,solr性能表现不如elasticsearch

elasticsearch简介

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。

Elasticsearch是一个分布式、高扩展、高实时的搜索与数据分析引擎;它能很方便的使大量数据具有搜索、分析和探索的能力;充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。

Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。

优点

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

缺点

  • 支持的索引格式比较有限,不如solr丰富
  • 对已有数据进行搜索,性能不如solr快

solr和elasticsearch比较

  • 对已有数据进行搜索时,solr比elasticsearch更快

  • 实时建立索引时, solr会产生io阻塞,查询性能较差;建立实时索引时elasticsearch具有更好的性能

  • 随着数据量的增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化

 

对比总结 

  • Solr 利用 Zookeeper 进行分布式管理;Elasticsearch自身带有分布式协调管理功能
  • Solr 支持更多格式的数据;Elasticsearch 仅支持json文件格式
  • Solr 官方提供的功能更多;而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供
  • Solr 在传统的搜索应用中表现好于 Elasticsearch;在处理实时搜索应用时效率明显低于 Elasticsearch
  • Solr 是传统搜索应用的有力解决方案;Elasticsearch 更适用于新兴的实时搜索应用

 

参考

https://www.cnblogs.com/Little-Li/p/11220513.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值