首先要确保有java8的环境,安装方法以下(centos)java
1 wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm 2 rpm -ivh jdk-8u161-linux-x64.rpm
https://www.baidu.com/link?url=cn60GecIBvDt9OvD_nQK9CR0TwbwxLM2DtpYNIptUGtNMG89ELhbPCNFg0xDlT205HcG88QVruw1Zgte5Nim620OPshtt3hKq1zACpJQ3WTCSwtKUO2sdnVzpUjrbuQ2&wd=&eqid=e3cf42960002cb16000000055bee8e9f 这个地址就是官网的jdk下载地址,
环境安装完毕,下载elesticsearch,这里若是须要其余版本直接改末尾的版本号就能够下载其余版本的node
1 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.2.zip
解压elasticsearch-5.5.2.ziplinux
1 unzip elasticsearch-5.5.2.zip
2 mv elasticsearch-5.5.2 elasticsearch
若是没有unzip这个命令的话能够先运行git
1 yum install unzip
elasticsearch不能直接用root帐户运行,因此须要建立一个用户,并且须要将elasticsearch文件夹属主修改成新建立的这个用户,否则的话启动的时候会有一些权限引发的错误github
由于这时候并不知道root的密码,因此先给root建立一个密码bootstrap
1 passwd root vim
而后输入密码centos
接着建立用户并修改文件夹属主和属组服务器
groupadd elasticsearch
useradd elasticsearch -g elasticsearch
passwd elasticsearch
chown -R elasticsearch:elasticsearch elasticsearch
打开位于elasticsearch文件夹中/conifg目录下的 elasticsearch.yml配置文件修改配置cookie
cluster.name: elas_cluster 集群的名字
node.name: node-q1 节点的名称
node.master: true
node.data: true
配置文件中给出了三种配置高性能集群拓扑结构的模式,以下:
1. 若是你想让节点从不选举为主节点,只用来存储数据,可做为负载器
node.master: false
node.data: true
2. 若是想让节点成为主节点,且不存储任何数据,并保有空闲资源,可做为协调器
node.master: true
node.data: false
3. 若是想让节点既不称为主节点,又不成为数据节点,那么可将他做为搜索器,从节点中获取数据,生成搜索结果等
node.master: false
node.data: false
默认状况是两个都是true,若是没几台服务器的话就用默认的就能够了。
network.host: 192.168.0.1 绑定的ip,设置为0.0.0.0后能够用外网访问
network.publish_host: 192.168.0.1 指定elasticsearch节点对外的监听地址,就是外网地址,搭建集群的时候最好指定一下,不然可能集群没办法启动,默认应该是去监听内网地址的
node.attr.rack: r2 给节点添加额外属性,这个暂时没发现什么用处
path.data: /path/to/data 数据保存的目录
path.logs: /path/to/logs 日志保存的目录
bootstrap.memory_lock: true 禁止内存交换,最好设置为false,否则很是影响性能,若是由于这个启动的时候报错,能够去修改limits.conf,配置下面有说
http.port:9200 路由地址端口
transport.tcp.port:9300 TCP协议转发地址端口,像java使用这个端口去操做
注:ES默认的HTTP监听端口是9200,若是当前被占用,则在9200~9300范围内递增;另外TCP的默认监听端口是9300,若是当前被占用,则再9300~9400范围内递增。因此单机少许节点,不配置具体端口的话,也是能够运行的。
discovery.zen.ping.unicast.hosts: ["192.168.36.130", "192.168.36.132:9300"] 单播的地址,配置集群中其余节点的ip,新加入的节点经过这些ip同步到集群,这里的端口应该使用transport.tcp.port端口
discovery.zen.minimum_master_nodes: 2 master节点是选取出来的,一个集群只能有一个,以上node.master: true配置是说该节点具备被选举的权利,而如今这个配置就是告诉 Elasticsearch 当没有足够 master 候选节点的时候,就不要进行 master 节点选举,等 master 候选节点足够了才进行选举。(由于你是一台台去启动服务器的) 这样是为了防止集群中同时存在两个master,这个数值应该配置为 ( master 候选节点个数 / 2) + 1。因此要高可用的话至少三台以上有被选举权。
gateway.recover_after_nodes: 2 通俗来讲就是等集群有几个节点启动起来了再来选举master,分配分片数据什么的,这里配得很差可能有的问题就是启动的时候可能会多耗点性能
index.number_of_shards: 5 设置索引的分片数,默认为5 分片的意思就是一整个索引文档,分红5个部分去保存
index.number_of_replicas: 1 设置索引的副本数,默认为1 1个副本至关于一个备份
配置一下
敲命令
sysctl -w vm.max_map_count=655360
这时候可能会由于服务器内存缘由遇到一个错误 Cannot allocate memory
在elasticsearch目录下执行 vim config/jvm.options
修改内存
-Xms256m
-Xmx256m
(根据本身服务器内存设置)
一切就绪后启动
切换到elasticsearch用户,不然root用户下启动会抛异常
su elasticsearch
elasticsearch目录下bin中运行 ./elasticsearch
启动的时候发现报错,并且可能一次又一次,一次好几个错,错误这里就不说了,主要都是由于帐户权限,内存线程什么引发的,网上的解决方法不少,随便贴几个连接
https://blog.csdn.net/gongpulin/article/details/78568595
https://blog.csdn.net/u013083576/article/details/78499884
单个成功访问ip地址加端口后,端口是http.port端口
集群健康查看 ip加端口加上/_cluster/health
若是须要安装ik分词器的,能够在 https://github.com/medcl/elasticsearch-analysis-ik/releases 找到对应的版本 elasticsearch-analysis-ik-x.x.x.zip 下载解压,最后将解压后的文件拷贝到 elasticsearch文件夹的 /plugin/ 文件夹中,启动es就ok了