一、 ElasticSearch介绍(简称ES)java
ES即为了解决原生Lucene使用的不足,优化Lucene的调用方式,并实现了高可用的分布式集群的搜索方案。windows
首先,ES的索引库管理支持依然是基于Apache Lucene(TM)的开源搜索引擎。api
ES也使用Java开发并使用Lucene做为其核心来实现全部索引和搜索的功能,可是它的目的是经过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。服务器
Lucene直接经过java API调用,而ES把这些API调用过程进行了的封装为简单RESTful请求,让咱们调用起来更加简单.restful
不过,ES的核心不在于Lucene,其特色更多的体现为:curl
分布式的实时文件存储,每一个字段都被索引并可被搜索jvm
分布式的实时分析搜索引擎elasticsearch
能够扩展到上百台服务器,处理PB级结构化或非结构化数据分布式
高度集成化的服务,你的应用能够经过简单的 RESTful API、各类语言的客户端甚至命令行与之交互。工具
上手Elasticsearch很是容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它拥有开瓶即饮的效果(安装便可使用),只需不多的学习既可在生产环境中使用。
Lucene和ES的联系和区别(项目中为啥使用ES而不用Lucene):
联系:ElasticSearch封装了Lucene,让使用变得更简单,在高可用上面作得更好。
区别:ElasticSearch除了拥有Lucene全部优势之外,还拥有本身优势.
可用性:支持集群,没有单点故障
扩展性:支持集群扩展
在集群环境使用:
ElasticSearch:搜索引擎服务器,全部项目都统一访问索引服务器,能够支持在集群环境使用.
Lucene :搜索引擎工具包,必须集成到项目中使用,而在集群环境下,多个服务器都有本身Lucene文件,因此不统一. 不支持在集群环境使用
支持多种语言:ElasticSearch支持不少语言,Lucene支持java。
简单性:ElasticSearch简单,都是http请求;而Lucene比较复杂,都要调用API执行一大堆操做
通常lucene在中小型项目中使用(可是也能使用es),而ES在大型项目中使用.由于ES支持在集群环境使用,而且自身也支持集群.
二、ES的组成&交互方式
ES由:服务端、客户端、RestfulAPI组成。
交互方式(基于Restful API):
ES和全部客户端的交互都是使用JSON格式的数据。
其余全部程序语言均可以使用RESTful API,经过9200端口的与ES进行通讯,在开发测试阶段,你可使用你喜欢的WEB客户端, curl命令以及火狐的POSTER插件方式和ES通讯。
三、ES的安装
ES服务只依赖于JDK,推荐使用JDK1.7+。
① 下载ES安装包
官方下载地址:https://www.elastic.co/downloads/elasticsearch
本文以在window环境下,ES 5.2.2版本为例,下载对应的ZIP文件。
②安装
因为是绿色版本,解压缩就能安装.
③ 运行ES
改一下jvm.options,而后在在bin目录下运行elasticsearch.bat(bin/elasticsearch.bat)。
④ 验证
访问:http://localhost:9200/
看到上图信息,恭喜你,你的ES集群已经启动而且正常运行。
四、ES的客户端
ES客户端能够分为图形界面客户端和代码客户端。
图形界面客户端有多个,要选择一个合适的。使用选择好的图形界面客户端
和代码客户端使用restfulapi操做es服务端。
4.1 图形界面客户端 9200
① Curl命令方式:
默认windows下不支持curl命令。
②火狐的POSTER插件界面:
相似于Firebug,在火狐的“扩展”中搜索“POSTER”,并安装扩展工具。
使用POSTER模拟请求的效果
③辅助管理工具Kibana5
① Kibana5.2.2下载地址:https://www.elastic.co/downloads/kibana
② 解压并编辑config/kibana.yml,设置elasticsearch.url的值为已启动的ES
③ 启动Kibana5 : bin\kibana.bat
④ 默认访问地址:http://localhost:5601
Discover:可视化查询分析器
Visualize:统计分析图表
Dashboard:自定义主面板(添加图表)
Timelion:Timelion是一个kibana时间序列展现组件(暂时不用)
Dev Tools :Console(同CURL/POSTER,操做ES代码工具,代码提示,很方便)
Management:管理索引库(index)、已保存的搜索和可视化结果(save objects)、设置 kibana 服务器属性。
4.2 Java代码客户端 9300
略