前言:
最近在接触ElasticSearch,对于没接触这部分的人来说,ES算是一种新模式的中间件出现在我们的眼前—一个webapp提供restful接口进行操作数据的中间件。以前认为引用一些中间件,要么是一个jar或者多个jar包。比如shiro之类,或者就是一个单独的应用,比如MQ,Nosql之类。所以很好奇他的体系会是什么样的一个体系。
什么是ElasticSearch?
百度百科:
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
简而言之:
ElasticSearch就是在Lucene基础上进行封装,拓展成一个功能更强大的分布式搜索引擎(webapp),可以通过restful风格的http的请求方法实现一些想做的事情。
什么是Lucene?
百度百科:
Lucene是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。
简而言之:
Lucene就是java的一个工具包,里面主要包括搜索的方法和算法,而不在意文本或者数据的来源和储藏,重在处理过程,重在方法。
ElasticSearch主要应用场景:搜索
Lucene就是为搜索而生,而ElasticSearch当然也是主要应用在搜索领域,但概括来说有一下几个特点:
- 分布式:ElasticSearch自身就支持分布式,而相似基于Lucene而成的solr是基于zookeeper集群的分布式。分布式的优点当然就是能够处理海量数据。提高可用性。
- 有和Lucene一样实时处理速度速度。而solr实时性表现就比较差了。
- 开箱即用。有良好的文件支持和api规范。
- 集成插件,ElasticSearch强大需要集成一系列插件,比如Kibana可视化管理,IK中文分词器等等。
- 跨平台,都能用http方式操作了,当然和平台没关系。根据每个平台的规则发送请求就可以。可能有的对json或者其他支持不好的也有第三方的封装包可用。
- 海量数据的存储,对数据权限不太重要的一些可以一定程度的替代Nosql.
但是也有一些缺点,比如吃内存,插件对版本一致性要求较高。
实战安装:
- 官方下载地址,但是建议先看完后面在下。一般
如果做日志就下前三个,成为ELK,我目前还没用到第三个,所以下了前两个。
- 还有一个重要的插件是IK中文分词。github有下载地址,但是你要在首页看到版本对应关系,不然会ES会闪退。
- ES和kibana解压到文件夹即可,但是中文分词器需要放到固定的位置,ES下plugins里面新建ik然后解压即可。
4.先打开es下bin,es启动的脚本。http://localhost:9200/ ,如果有json一串,说明es成功,如果es启动失败,查看log文件下内容。
4. 如果上面成功,打开kibana目录下bin的启动脚本。打开 http://localhost:5601 ,如果有界面,说明就成功了,kibana是es的可视化管理界面,功能强大,操作方便。
好了,es的基础组件就安装好了,下面就可以使用这些东西慢慢学习es的精髓了。