版本:ElasticSearch 7.6.1

6.x 7.x 的区别十分大,6.x API (原生API、RestFul 高级!)


Lucene 是一套信息检索工具包!jar包!,不包含搜索引擎系统!包含:索引结构、读写索引的工具、排序、搜索规则...工具类。

Lucene 和 ElasticSearch 关系

ElasticSearch 是基于Lucene 做了一些封装和增强(我们上手是十分简单!)

ElasticSearch概述

ElasticSearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用Java 开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

据国际权威数据库产品评测机构DB Engines的统计,在2016年1月,ElasticSearch已超过Solr等,成为排名第一的搜索引擎类应用。

历史

多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。

直接基于Lucene工作会比较困难,所以Shay开始构建抽象Lucene代码以便Java程序员可以在应用中添加搜索功能。他发布了他的第一个开源项目,叫做“Compass”。

后来Shay找到一份工作,这份工作处在高性能和内存数据网络的分布式环境中,因此高性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做ElasticSeach。

第一个公开版本出现在2010年2月,在那之后ElasticSearch已经成为GitHub上最受欢迎的项目之一,代码贡献者超过300人。一家主营ElasticSearch的公司就此成立,他们一边提供商业支持一边开发新功能,不过ElasticSearch将永远开源且对所有人可用。

Shay的妻子依旧等待着他的食谱搜索...


谁在用ElasticSearch?

  1. 维基百科,类似百度百科、全文检索、高亮、搜索推荐(权重)
  2. The Guardian(国外新闻网站),类似搜狐新闻,用户行为日志(点击、浏览、收藏、评论)+ 社交网络数据(对某某新闻的相关看法),数据分析,给到每篇新闻文章的作者,让他知道他的文章的公众反馈(好,坏,热门,垃圾,鄙视,崇拜)
  3. Stack Overflow、GitHub、电商网站、检索商品、日志数据分析;logstach采集日志,ES进行复杂的数据分析,ELK技术,ElasticSearch + LogStash + Kibana
  4. 商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户,比如说订阅牙膏的监控,如果高露洁牙膏的家庭套装低于50块钱,就通知我,我就去买。
  5. BI系统,商业智能,Business Intelligence。比如说有个大型商场集团,BI分析一下某某区域最近3年的用户消费金额呈现100% 的增长,而且用户群体85%是最级白领,开一个新商场。ES执行数据分析和挖掘,Kibana进行数据可视化
  6. 国内:站内搜索(电商、招聘、门户等等),IT系统搜索(OA、CRM、ERP等等),数据分析(ES热门的一个使用场景)。

ES和Solr的差别

ElasticSearch是一个实时分布式搜索和分析引擎。它让你以前未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用。ElasticSearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。

Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可拓展,并对索引、搜索性能进行了优化。用POST方法向Solr服务器发送一个描述Field及其内容的XML文档,Solr根据xml文档添加、删除、更新索引。Solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口

Lucene 提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。


架构选择,从两者的区别来考虑

  • 当单纯的对已有数据进行搜索时,Solr更快。

es与slor的性能比对 es和solr的区别_Java

  • 当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势。

es与slor的性能比对 es和solr的区别_大数据_02

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

es与slor的性能比对 es和solr的区别_es与slor的性能比对_03

  • 转变我们的搜索基础设施后从Solr ElasticSearch,我们看见一个即时  ~ 50X 提高搜索性能!

es与slor的性能比对 es和solr的区别_elasticsearch_04


ElasticSearch VS Solr总结

  1. ES 基本是开箱即用(解压就可以用!),非常简单。Solr安装略微复杂一丢丢!
  2. Solr 利用 Zookeeper 进行分布式管理,而ElasticSearch 自身带有分布式协调管理功能。
  3. Solr 支持更多格式的数据,比如JSON、XML、CSV,而ElasticSearch仅支持Json格式。
  4. Sorl 官方提供的功能更多,而ElasticSearch 本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑
  5. Solr 查询更快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用;
  1. ES 建立索引快(即查询慢),即实时性查询快,用于facebook新浪等搜索。
  2. Solr 是传统搜索应用的有力解决方案,但ElasticSearch 更适用于新兴的实时搜索应用。
  1. Sorl 比较成熟,有一个更大、更成熟的用户、开发和贡献者社区,而ElasticSearch 相对开发维护者较少,更新太快,学习使用成本较高。(趋势!!!

ElasticSearch 安装

声明:JDK1.8,最低要求!ElasticSearch 客户端,界面工具!

Java 开发,ElasticSearch 的版本和我们之后对应的Java 的核心jar包!版本需要对应,JDK环境需要是正常的!!!

window 下安装:

  1. 解压就可以使用了
  2. 熟悉目录;
  1. bin 启动文件;
  2. config 配置文件
  1. log4j2             日志配置文件
  2. jvm.options             java 虚拟机相关的配置
  3. elasticsearch.yml             elasticsearch 的配置文件!默认 9200端口!跨域!
  1. lib             相关jar 包
  2. logs          日志    
  3. module    功能模块
  4. plugins     插件,比如:Ik分词器
  1. 启动:双击bin/目录下的elasticsearch.bat 文件;启动后可以看到默认的公开端口9200,通信的端口9300
  1. 启动成功后,访问9200:

es与slor的性能比对 es和solr的区别_大数据_05

es与slor的性能比对 es和solr的区别_elasticsearch_06