搜索中间件面试题之一

ElasticSearch 和 Solr 的区别

两者都是基于 Lucene 搜索服务器开发的,是一款优秀的、高性能的企业级搜索服务器,且都是基于分词技术构建的倒排索引的方式进行查询,区别如下:

  • 当单纯地对已有数据进行检索的时候,Solr 的效率高于 ES
  • 当实时建立索引的时候,Solr 会产生 IO 阻塞,而 ES 则不会,ES 的查询性能高于 Solr
  • 在不断动态添加数据的时候,Solr 的检索效率会变得低下,而 ES 则没什么变化
  • Solr 利用 ZooKeeper 进行分布式管理,而 ES 自带分布式管理功能,Solr 一般都要部署到 Web 服务器上(如 Tomcat),启动 Tomcat 的时候需要配置 Tomcat 与 Solr 的关联
  • Solr 支持更多的数据格式(XML、JSON、CSV 等),而 ES 仅支持 JSON 文件格式
  • Solr 是传统搜索应用的有力解决方案,但是 ES 更适用于新兴的实时搜索应用
  • Solr 官网提供的功能更多,而 ES 本身更注重核心功能,高级功能一般由第三方插件提供