一、ElasticSearch认识
1、什么是ElasticSearch?
- 基于Apache Lucene构建的开源搜索引擎
- 采用Java编写,提供简单易用的RESTFul API
- 轻松的横向扩展,可支持PB级的结构化或非结构化数据处理
2、可用应用场景
- 海量数据分析引擎
- 站内搜索引擎
- 数据仓库
3、一线公司实际应用场景
- 英国卫报-实时分析公众对文章的回应
- 维基百科、 GitHub -站内实时搜索
- 百度-实时日志监控平台
二、elasticsearch安装
单实例安装
1、下载
下载链接:https://www.elastic.co/downloads/past-releases/elasticsearch-5-5-2
2、运行
cyh@chenyonuandembp bin % sh elasticsearch
3、在浏览器打开127.0.0.1:9200
:
插件Head安装
1、下载
2、安装运行
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
3、在本地下载的elasticsearch中进行配置
cyh@chenyonuandembp elasticsearch-5.5.2 % vim config/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
4、把本地的elasticsearch和elasticsearch-head都启动
elasticsearch: sh elasticsearch-5.5.2/bin/elasticsearch
elasticsearch-head: npm run start
5、http://localhost:9100
浏览器运行
分布式安装
1、主节点配置
在cyh@chenyonuandembp elasticsearch-5.5.2 % vim config/elasticsearch.yml
主节点中配置:
cluster.name: cyh
node.name: master
node.master: true
network.host: 127.0.0.1
2、分别启动服务运行并浏览(同上)
3、分布式安装
复制两份elasticsearch-5.5.2在两个文件夹中,做分布式安装:
cyh@chenyonuandembp software % cp -r elasticsearch-5.5.2 es_slave1
cyh@chenyonuandembp software % cp -r elasticsearch-5.5.2 es_slave2
4、字节点配置
在子节点上配置cyh@chenyonuandembp es_slave1 % vim config/elasticsearch.yml
:
# 集群名称
cluster.name: cyh
# 节点名称
node.name: slave1
network.host: 127.0.0.1
# 防止与主节点端口号9200冲突,自己设定一个
http.port: 8200
# 避免子节点是游离状态,此配置帮助子节点找到主节点
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
在子节点上配置cyh@chenyonuandembp es_slave2 % vim config/elasticsearch.yml
cluster.name: cyh
node.name: slave2
network.host: 127.0.0.1
http.port: 8000
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
5、浏览器运行
遇到的问题
在分布式安装子节点时遇到的问题:
failed to join {master}{省略配置信息输出}
# 主要是下面的错误信息
org.elasticsearch.transport.RemoteTransportException: [master][IP:9300][internal:cluster/coordination/join]
Caused by: java.lang.IllegalArgumentException: can't add node {slave1}{省略配置信息} with the same id but is a different node instance
因为在复制 Elasticsearch 到 slave1 / slave2时,将ES目录 elasticsearch-5.5.2 下的 data 目录一起复制过去了,这里再启动slave1时,data目录下的文件冲突,所以报错了。
解决方案:
删掉报错的 es 目录下的 data 目录,重新启动ES