ElasticSearch(分布式全文搜索引擎)
1.Lucene的优化, 实现了高可用的分布式集群的搜索方案
2.首先,ES的索引库管理支持依然是基于Apache Lucene(TM)的开源搜索引擎。ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
3.ES的特点
a) 分布式的实时文件存储,每个字段都被索引并可被搜索
分布式的实时分析搜索引擎
可以扩展到上百台服务器,处理PB级结构化或非结构化数据
高度集成化的服务,你的应用可以通过简单的 RESTful API、各种语言的客户端甚至命令行与之交互。
ES支持分布式集群
b) 上手Elasticsearch非常容易。它提供了许多合理的缺省值,并对初学者隐藏了复杂的搜索引擎理论。它拥有开瓶即饮的效果(安装即可使用),只需很少的学习既可在生产环境中使用。
c) 与ES类似的框架
i. ES框架自身携带分布式协调管理的功能,但是仅仅支持json格式的数据
ii. Solr(重量级加框架):利用zookeeper进行分布式管理,支持更多格式的数据,使用时要做许多配置
iii. Katta基于Lucene
基于 Lucene 的,支持分布式,可扩展,具有容错功能,准实时的搜索方案。优点:开箱即用,可以与 Hadoop
配合实现分布式。具备扩展和容错机制。
缺点:只是搜索方案,建索引部分还是需要自己实现。在搜索功能上,只实现了最基本的需求。成功案例较少,项目的成熟度稍微差一些。
iv. HadoopContrib
- Map/Reduce 模式的,分布式建索引方案,可以跟 Katta 配合使用。优点:分布式建索引,具备可扩展性。缺点:只是建索引方案,不包括搜索实现。工作在批处理模式,对实时搜索的支持不佳。
d) 小結:ElasticSearch简化了全文检索lucene的使用,同时增加了分布式的特性,使得构建大规模分布式全文检索变得非常容易。
- ES的安装和使用说明
a) 安装ES:下载压缩包解压,然后运行elasticsearch.bat就行了
浏览器运行:127.0.0.1:9200
b) ES服务器的三个状态
i. Green—yellow--red
c) ES的交互方式
i. 基于restFul 的API交互方式,和所有的客户端交互都通过json格式的数据交互
ii. Java API交互的两种方式
- 节点客户端
节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不存储任何数据,但是它知道数据在集群中的具体位置,并且能够直接转发请求到对应的节点上。 - 传输客户端
这个更轻量的传输客户端能够发送请求到远程集群。它自己不加入集群,只是简单转发请求给集群中的节点。
两个Java客户端都通过9300端口与集群交互,使用ES传输协议(ES Transport Protocol)。集群中的节点之间也通过9300端口进行通信。如果此端口未开放,你的节点将不能组成集群。
注意 Java客户端所在的ES版本必须与集群中其他节点一致,否则,它们可能互相无法识别。 |
d) Restful风格的拓展认识
e) 辅助管理工具(kibana)
i. ① Kibana5.2.2下载地址:https://www.elastic.co/downloads/kibana
ii. ② 解压并编辑config/kibana.yml,设置elasticsearch.url的值为已启动的ES
iii. ③ 启动Kibana5 : bin\kibana.bat
iv. ④ 默认访问地址:http://localhost:5601
- 认识ElasticSearch
a) 概念:和Lucene一样都是用于全文检索,区别就是Lucene是个全文搜索工具包,而ES是一个全文搜索服务器
b) 全文检索:基于索引查询数据的技术,代替了模糊查询,提高了查询的效率
c) Lucene的缺点:使用复杂,只支持JAVA语言环境,Lucene无法做集群
d) 而ES弥补了Lucene的不足
i. ElasticSearch简化了全文检索lucene的使用,同时增加了分布式的特性,使得构建大规模分布式全文检索变得非常容易.
ii. ES本身支持集群,
iii. ES对Lucene进行了一个封装,原来Lucene创建索引是使用一对代码创建索引,而ES创建索引只用发送一个http请求就好了
- 安装ES服务器
a) 下载ES压缩包
b) 解压
c) 启动bin/elasticsearch.bat
d) 测试是否启动: http://localhost:9200
e) 启动kibana时可以看到ES集群的健康状态
- ES图形界面客户端安装
1)curl
windows不支持,需要在linux
2) 火狐的POSTER插件界面
3) kibana
官方推荐
4)前端head比较屌,可以直接看到shard和replica
5)postman
a) 这里选择kibana可视化界面
i. 下载压缩包
ii. 解压安装
iii. 修改config/kibana.yml配置文件: 设置elasticsearch.url的值为已启动的ES的端口路径
iv. 启动kibana
v. 访问localhost:5601
- ElasticSearch-Head的安装
a) 解压压缩包
,然后在cmd运行安装命令
npm install,和运行命令npm run start
安装完毕后要连接ES,需要在elasticsearch/config/elasticsearch.yml中进行配置, http.cors.enabled: true
http.cors.allow-origin: "*",后才能连接到ES服务器