elasticsearch-6.0.1安装
0. 介绍:
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎;是目前全文搜索引擎的首选。
Elastic 的底层是开源库 Lucene。但是,没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
1. 环境准备:
系统:CentOS Linux release 7.4.1708 (Core)
Java环境:JDK1.8(若未安装,需先安装)
集群环境:
172.16.64.137 (默认master node)
172.16.64.138
172.16.64.147
2.下载elasticsearch-6.0.1:
官网:https://www.elastic.co/downloads/elasticsearch
下载链接:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.1.tar.gz
解压、移动
1 2 | tar -zxvf elasticsearch-6.0.1.tar.gz mv elasticsearch-6.0.1.tar.gz /usr/local/elasticsearch |
3. 配置主配置文件:
vim /usr/local/elasticsearch/config/elasticsearch.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 | cluster.name: cluster-es node.name: es-node1 path.data: /usr/local/elasticsearch/data path.logs: /usr/local/elasticsearch/logs network.host: 172.16.64.137 http.port: 9200 discovery.zen.minimum_master_nodes: 1 discovery.zen.ping.unicast.hosts: ["172.16.64.137", "172.16.64.138", "172.16.64.147"] node.master: true node.data: false discovery.zen.fd.ping_timeout: 180s discovery.zen.fd.ping_retries: 10 discovery.zen.fd.ping_interval: 30s |
配置文件详解:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | cluster.name: cluster-es # 集群名称 node.name: es-node1 # 节点名称,其余两台为es-node2、es-node3 path.data: /usr/local/elasticsearch/data # 数据目录 path.logs: /usr/local/elasticsearch/logs # 日志目录 network.host: 172.16.64.137 # 本机IP http.port: 9200 # 本机http端口 discovery.zen.minimum_master_nodes: 1 # 指定集群中的节点中有几个有master资格的节点 discovery.zen.ping.unicast.hosts: ["172.16.64.137", "172.16.64.138", "172.16.64.147"] # 指定集群中其他节点的IP node.master: true # 是否为master node.data: false # 是否为数据节点 discovery.zen.fd.ping_timeout: 180s # 设置集群中自动发现其它节点时ping连接超时时间 discovery.zen.fd.ping_retries: 10 # 集群中节点之间ping的次数 discovery.zen.fd.ping_interval: 30s # 集群中节点之间ping的时间间隔 |
4. 配置足够内存
1 2 3 | vim /usr/local/elasticsearch/config/jvm.options -Xms2g -Xmx2g |
5. 启动
ES有执行脚本的能力,因安全因素,不能在root用户下运行,强行运行会报如下错误:
org.elasticsearch.bootstrap.StartupException:
java.lang.RuntimeException: can not run elasticsearch as root
1 2 3 4 5 6 7 8 9 | # 创建用户 useradd ela # 赋予ela用户所有者权限 chown -R ela:ela /usr/local/elasticsearch su - ela [ela@test1 ~]$/usr/local/elasticsearch/bin/elasticsearch -d # -d参数是后台运行 # 建议按以下命令启动 [ela@test1 ~]$ nohup /usr/local/elasticsearch/bin/elasticsearch & |
正常情况下,启动后,网页访问172.16.16.206:9200会有以下内容显示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | { "name" : "dcV-DRJ", "cluster_name" : "elasticsearch", "cluster_uuid" : "N6qGE15TQqq9-RQedQqqEw", "version" : { "number" : "6.1.1", "build_hash" : "bd92e7f", "build_date" : "2017-12-17T20:23:25.338Z", "build_snapshot" : false, "lucene_version" : "7.1.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" } |
启动错误收集:
错误一:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
解决:
1 2 3 4 5 6 7 | vi /etc/security/limits.conf #添加如下内容: * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096 |
错误二:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决:最大虚拟内存太小
1 2 3 4 5 | vim /etc/sysctl.conf 添加一行 vm.max_map_count=655360 # 执行命令: sysctl -p |
7. head插件安装
安装head插件前,需要先安装Node.js,需要手动安装,yum安装的版本太低
7.1安装Node.js
官网:https://nodejs.org/en/download/
下载链接:wget https://nodejs.org/dist/v8.9.3/node-v8.9.3.tar.gz
1 2 3 4 5 | tar node-v8.9.3.tar.gz cd node-v8.9.3 ./configure --prefix=/usr/local/node/ make # make时间较长 make install |
添加系统变量:
1 2 3 4 5 6 | vim /etc/profile export NODEJS_HOME=/usr/local/node/ export PATH=$PATH:$NODEJS_HOME/bin # 使变量生效 source /etc/profile |
验证:
1 2 | [root@test1 bin]# node -v v8.9.3 |
在安装node的同时,会将npm模块一起安装
7.2 安装head插件
下载
1 2 | git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head |
安装(方法1)
1 | npm install |
安装(方法2)
使用cnpm安装,因为在npm安装时,因为有些依赖的问题,速度慢且容易出错中断。
1 2 3 4 5 | #安装国内镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org # 安装插件(在elasticsearch-head目录下) cnpm install |
安装成功后,修改配置Gruntfile.js
1 2 3 4 5 6 7 8 9 10 11 | vi Gruntfile.js connect: { server: { options: { hostname: "0.0.0.0", #新增的一行 port: 9100, base: '.', keepalive: true } } } |
修改_site/app.js配置
1 2 3 4 | # 搜索 http://localhost:9200 # 修改为本机IP this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.1.138:9200"; |
elasticSearch整合elasticsearch-head插件:
1 2 3 4 5 6 7 | # 在配置文件的最后加上运行head插件跨域访问rest接口 vim /usr/local/elasticsearch/config/elasticsearch.yml # 添加如下内容: http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-credentials: true |
重启elasticsearch
重启elasticsearch需要kill掉进程,然后再启动
运行elasticsearch-head
1 | npm run start & |
方法3(离线安装)
在离线情况下,需要在有网络的环境里安装好,然后将整个elasticsearch-head目录压缩拷贝过来。
重要:head插件目录不能放在es的目录里,需要单独放(es从版本5以上不支持直接安装head)
首先,安装grunt,将整个elasticsearch-head目录包括目录下的node_models内容一起拷贝过来
然后,修改方法2中的两个配置文件Gruntfile.js 和_site/app.js
最后,使用../elasticsearch-head/node_models/grunt/bin/grunt server & 来启动
正常运行elasticsearch-head会有以下结果输出:
1 2 3 4 5 6 7 8 9 10 11 | [root@test1 elasticsearch-head]# npm run start > elasticsearch-head@0.0.0 start /usr/local/elasticsearch-head > grunt server >> Local Npm module "grunt-contrib-jasmine" not found. Is it installed? (node:16304) ExperimentalWarning: The http2 module is an experimental API. Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100 |
按照屏幕提示通过浏览器访问:http://172.16.64.137:9100/
最后:如果在服务器上安装Elasticsearch,而想在本地机器上进行开发,这时候就需要在关闭终端的时候,让Elasticsearch继续保持运行。
最简单的方法就是使用nohup。先按Ctrl + C,停止当前运行的Elasticsearch,改用下面的命令运行Elasticsearch
1 | nohup ./bin/elasticsearch & |
附:es启动脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #!/bin/sh #chkconfig: 2345 80 05 #description: es export JAVA_HOME=/usr/local/jdk1.8.0_151 export JAVA_BIN=/usr/local/jdk1.8.0_151/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME JAVA_BIN PATH CLASSPATH case $1 in start) su ela<<! cd /usr/local/elasticsearch ./bin/elasticsearch -d exit ! echo "es startup" ;; stop) es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'` kill -9 $es_pid echo "es stopup" ;; restart) es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'` kill -9 $es_pid echo "es stopup" su ela<<! cd /usr/local/elasticsearch ./bin/elasticsearch -d ! echo "es startup" ;; *) echo "start|stop|restart" ;; esac |
根据实际情况,修改jdk目录,ela安装目录
写进启动文件/etc/init.d/ela,给予x权限,添加到启动菜单:
vim /etc/init.d/ela
chmod 755 /etc/init.d/ela
chkconfig –add ela
chkconfig ela on