狂神说笔记之ElasticSearch
在学习ElasticSearch之前,先简单了解⼀下Lucene:
Doug Cutting开发
是apache软件基⾦会4 jakarta项⽬组的⼀个⼦项⽬
是⼀个开放源代码的全⽂检索引擎⼯具包
不是⼀个完整的全⽂检索引擎,⽽是⼀个全⽂检索引擎的架构,提供了完整的查询引擎和索引引擎,部分引擎(英⽂与德⽂两种西⽅语⾔)
当前以及最近⼏年最受欢迎的免费Java信息检索程序库。
Lucene和ElasticSearch的关系:
ElasticSearch是基于Lucene 做了⼀下封装和增强
⼀、ElasticSearch概述
Elaticsearch,简称为es,es是⼀个开源的⾼扩展的分布式全⽂检索引擎,它可以近乎实时的存储、检索数据;本⾝扩展性很好,可以扩展到上百台服务器,处理PB级别(⼤数据时代)的数据。es也使⽤java开发并使⽤Lucene作为其核⼼来实现所有索引和搜索的功能,但是它的⽬的是 通过简单的RESTful API来隐藏Lucene的复杂性,从⽽让全⽂搜索变得简单 。
据国际权威的数据库产品评测机构DB Engines的统计,在2016年1⽉,ElasticSearch已超过Solr等,成为排名第⼀的搜索引擎类应⽤。
历史
多年前,⼀个叫做Shay Banon的刚结婚不久的失业开发者,由于妻⼦要去伦敦学习厨师,他便跟着也去了。在他⼯作的过程中,为了给妻⼦构建⼀个⾷谱的搜索引擎,他开始构建⼀个早期版本的Lucene。
直接基于Lucene⼯作会⽐较困难,所以Shay开始抽象Lucene代码以便lava程序员可以在应⽤中添加搜索功能。他发布了他的第⼀个开源项⽬,叫做“Compass”。
后来Shay到⼀份⼯作,这份⼯作处在⾼性能和内存数据⽹格的分布式环境中,因此⾼性能的、实时的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为⼀个独⽴的服务叫做Elasticsearch。
第⼀个公开版本出现在2010年2⽉,在那之后Elasticsearch已经成为Github上最受欢迎的项⽬之⼀,代码贡献者超过300⼈。⼀家主营Elasticsearch的公司就此成⽴,他们⼀边提供商业⽀持⼀边开发新功能,不过Elasticsearch将永远开源且对所有⼈可⽤。
Shay的妻⼦依旧等待着她的⾷谱搜索…..
谁在使⽤:
1、,类似百度百科,全⽂检索,⾼亮,搜索推荐/2
2、The Guardian (国外新闻⽹站) ,类似搜狐新闻,⽤户⾏为⽇志(点击,浏览,收藏,评论) +社交⽹络数据(对某某新闻的相关看法) ,数据分析,给到每篇新闻⽂章的作者,让他知道他的⽂章的公众反馈(好,坏,热门,垃圾,鄙视,崇拜)
3、Stack Overflow (国外的程序异常讨论论坛) , IT问题,程序的报错,提交上去,有⼈会跟你讨论和回答,全⽂检索,搜索相关问题和答案,程序报错了,就会将报错信息粘贴到⾥⾯去,搜索有没有对应的答案
4、GitHub (开源代码管理),搜索 上千亿⾏代码
5、电商⽹站,检索商品
6、⽇志数据分析, logstash采集⽇志, ES进⾏复杂的数据分析, ELK技术, elasticsearch+logstash+kibana
7、商品价格监控⽹站,⽤户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给⽤户,⽐如说订阅⽛膏的监控,如果⾼露洁⽛膏的家庭套装低于50块钱,就通知我,我就去买
8、BI系统,商业智能, Business Intelligence。⽐如说有个⼤型商场集团,BI ,分析⼀下某某区域最近3年的⽤户消费 ⾦额的趋势以及⽤户体的组成构成,产出相关的数张报表, **区,最近3年,每年消费⾦额呈现100%的增长,⽽且⽤户体85%是⾼级⽩领,开-个新商场。ES执⾏数据分析和挖掘, Kibana进⾏数据可视化
9、国内:站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析(ES热门
的⼀⼀个使⽤场景)
ES和Solr
ElasticSearch简介
Elasticsearch是⼀个实时分布式搜索和分析引擎。 它让你以前所未有的速度处理⼤数据成为可能。
它⽤于 全⽂搜索、结构化搜索、分析 以及将这三者混合使⽤:
使⽤Elasticsearch提供全⽂搜索并⾼亮关键字,以及输⼊实时搜索(search-asyou-type)和搜索纠错(did-you-mean)等搜索建议功能。
英国卫报使⽤Elasticsearch结合⽤户⽇志和社交⽹络数据提供给他们的编辑以实时的反馈,以便及时了解公众对新发表的⽂章的回应。
StackOverflow结合全⽂搜索与地理位置查询,以及more-like-this功能来到相关的问题和答案。
Github使⽤Elasticsearch检索1300亿⾏的代码。
但是Elasticsearch不仅⽤于⼤型企业,它还让像DataDog以及Klout这样的创业公司将最初的想法变成可扩展的解决⽅案。
Elasticsearch可以在你的笔记本上运⾏,也可以在数以百计的服务器上处理PB级别的数据。
Elasticsearch是⼀个基于Apache Lucene(TM)的开源搜索引擎。⽆论在开源还是专有领域, Lucene可被认为是迄今为⽌最先进、性能最好的、功能最全的搜索引擎库。
但是, Lucene只是⼀个库。 想要使⽤它,你必须使⽤Java来作为开发语⾔并将其直接集成到你的应⽤中,更糟糕的是, Lucene⾮常复杂,你需要深⼊了解检索的相关知识来理解它是如何⼯作的。
Elasticsearch也使⽤Java开发并使⽤Lucene作为其核⼼来实现所有索引和搜索的功能,但是它的⽬的是<mark>通过简单的RESTful API来隐藏Lucene的复杂性,从⽽让全⽂搜索变得简单。</mark>
Solr简介
Solr是Apache下的⼀个顶级开源项⽬,采⽤Java开发,它是基于Lucene的全⽂搜索服务器。Solr提供了⽐Lucene更为丰富的查询语⾔,同时实现了可配置、可扩展,并对索引、搜索性能进⾏了优化
Solr可以独⽴运⾏,运⾏在letty. Tomcat等这些Selrvlet容器中 , Solr 索引的实现⽅法很简单,<mark>⽤POST⽅法向Solr服务器发送⼀个描述Field及其内容的XML⽂档, Solr根据xml⽂档添加、删除、更新索引</mark>。Solr 搜索只需要发送HTTP GET请求,然后对Solr返回xml、json等格式的查询结果进⾏解析,组织页⾯布局。
Solr不提供构建UI的功能, Solr提供了⼀个管理界⾯,通过管理界⾯可以查询Solr的配置和运⾏情况。
Solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene.
Solr是⼀个独⽴的企业级搜索应⽤服务器,它对外提供类似于Web-service的API接⼝。⽤户可以通过http请求,向搜索引擎服务器提交-定格式的⽂件,⽣成索引;也可以通过提出查请求,并得到返回结果。
ElasticSearch与Solr⽐较
1. 当单纯的对已有数据进⾏搜索时,Solr更快
1. 当实时建⽴索引时,Solr会产⽣io阻塞,查询性能较差,ElasticSearch具有明显的优势
1. 随着数据量的增加,Solr的搜索效率会变得更低,⽽ElasticSearch却没有明显的变化
1. 转变我们的搜索基础设施后从Solr ElasticSearch,我们看见⼀个即时~ 50x提⾼搜索性能!
总结
1、es基本是开箱即⽤(解压就可以⽤!) ,⾮常简单。Solr安装略微复杂⼀丢丢!
2、Solr 利⽤Zookeeper进⾏分布式管理,⽽E lasticsearch ⾃⾝带有分布式协调管理功能 。
3、Solr ⽀持更多格式的数据,⽐如JSON、XML、 CSV ,⽽Elasticsearch仅⽀持json⽂件格式。
4、Solr 官⽅提供的功能更多,⽽Elasticsearch本⾝更注重于核⼼功能,⾼级功能多有第三⽅插件提供,例如图形化界⾯需要kibana友好⽀撑
5、 Solr 查询快,但更新索引时慢(即插⼊删除慢) ,⽤于电商等查询多的应⽤;
ES建⽴索引快(即查询慢) ,即实时性查询快,⽤于facebook新浪等搜索。
Solr是传统搜索应⽤的有⼒解决⽅案,但Elasticsearch更适⽤于新兴的实时搜索应⽤。
6、Solr⽐较成熟,有⼀个更⼤,更成熟的⽤户、开发和贡献者社区,⽽Elasticsearch相对开发维护者较少,更新太快,学习使⽤成本较⾼。⼆、ElasticSearch安装
JDK8,最低要求
使⽤Java开发,必须保证ElasticSearch的版本与Java的核⼼jar包版本对应!(Java环境保证没错)
这⾥在windows上进⾏安装
Windows下安装
1、安装
解压即可(尽量将ElasticSearch相关⼯具放在统⼀⽬录下)
2、熟悉⽬录
bin 启动⽂件⽬录
config 配置⽂件⽬录
1og4j2 ⽇志配置⽂件
jvm.options java 虚拟机相关的配置(默认启动占1g内存,内容不够需要⾃⼰调整) 1 el
asticsearch 的配置⽂件! 默认9200端⼝!跨域!
java开发可视化界面1ib
相关jar包
modules 功能模块⽬录
plugins 插件⽬录
ik分词器
3、启动
⼀定要检查⾃⼰的java环境是否配置好
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论