一、首先简单了解一下Elasticsearch:
Elasticsearch是一个基于Apache Lucene(TM)的开源实时分布式搜索和分析引擎,它用于全文搜索、结构化搜索、分析以及将这三者混合使用,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
二、下载安装Elasticsearch
Elasticsearch基于java jdk, es5.x已经基于lucene6.x版本,lucene6.x版本需要jdk1.8以上的支持,自然es5.x也需要1.8版本的jdk了.
1、下载安装jdk1.8
下载安装jdk1.8参见https://www.cnblogs.com/smyhvae/p/3788534.html
2、下载Elasticsearch
我这里下载的是https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.zip
下载完成后解压在G:\bigdata\elasticsearch-5.2.0
修改G:\bigdata\elasticsearch-5.2.0\config\elasticsearch.yml 需要将#去掉
节点名称 node.name: node-104
网络IP network.host: 0.0.0.0 修改为0.0.0.0可以支持外部网络访问
端口地址 http.port: 9200
增加四个选项支持Elasticsearch head管理
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
3、启动Elasticsearch
在G:\bigdata\elasticsearch-5.2.0\bin 直接运行elasticsearch
开始cmd,输入G:进入G盘, cd 目录
正常运行的如下
浏览器里输入localhost:9200测试下:
至此ElasticSearch 运行成功
三、下载安装ElasticSearch head插件
head在es2.X及以前是作为es的一个插件存在的,可以直接通过plugin命令安装,5.x及以后需要作为一个单独的服务运行,基于nodejs环境及grunt启动服务。
1、下载安装nodejs
打开官网下载链接:https://nodejs.org/en/download/ 我这里下载的是node-v6.9.2-x64.msi,如下图:
安装过程为一路next,需要注意的是安装类型需要选择
安装完成后检验
2、安装grunt
使用npm安装grunt
npm install -g grunt -cli
3、下载 ElasticSearch-head 下载地址:https://github.com/mobz/elasticsearch-head,下载后解压缩到G:\bigdata\elasticsearch-5.2.0\目录下
4、修改head源码(也可以不修改,直接跳过这一步)
由于head的代码还是2.6版本的,直接执行有很多限制,比如无法跨机器访问。因此需要用户修改两个地方:
目录:head/Gruntfile.js:
connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true
}
}
}
增加hostname属性,设置为*
修改连接地址:
目录:head/_site/app.js
修改head的连接地址:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
把localhost修改成你es的服务器地址
5、npm安装依赖
到elasticsearch-head-master目录下,运行命令:
npm install
如果速度较慢或者安装失败,可以使用国内镜像:
建议使用这种方式,速度更快
npm install -g cnpm --registry=https://registry.npm.taobao.org
初次运行安装可能会报警告或错误。可以重新运行一次npm install。
最后,在head源代码目录下启动
npm run start
6、网页访问
四、elasticsearch集群设置
elasticsearch支持集群,实现集群只需要修改配置文件elasticsearch.yml即可
这里采用两台电脑192.168.1.104和192.168.1.108分别运行elasticsearch
第一台电脑的配置
#配置文件中未改动的位置我就不展示了
#第一个配置文件改动如下
#集群名称(必须一样)
cluster.name: zjs-application
#节点名称(必须不一样)
node.name: node-104
#本机的IP地址 可以是本机ip 也可以设置成0.0.0.0(本地获取)
network.host: 0.0.0.0
#服务的端口号
http.port: 9200
#服务发现端口 用做服务之间相互发现
transport.tcp.port: 9300
#集群发现IP集合
discovery.zen.ping.unicast.hosts: ["192.168.1.104:9300", "192.168.1.108:9300"]
#elasticsearch-head能够访问elasticsearch选项
http.cors.enabled: true
http.cors.allow-origin: "*"
第二台电脑的配置
#第二个配置文件改动如下
#集群名称(必须一样)
cluster.name: zjs-application
#节点名称(必须不一样)
node.name: node-108
#本机的IP地址 可以是本机ip 也可以设置成0.0.0.0(本地获取)
network.host: 0.0.0.0
#服务的端口号
http.port: 9200
#服务发现端口 用做服务之间相互发现
transport.tcp.port: 9300
#集群发现IP集合
discovery.zen.ping.unicast.hosts: ["192.168.1.104:9300", "192.168.1.108:9300"]
#elasticsearch-head能够访问elasticsearch选项
http.cors.enabled: true
http.cors.allow-origin: "*"
可以看出只有node.name不一样其他的都可以一样
重新运行elasticsearch
采用elasticsearch head查看结果如下: