linux中安装elasticsearch相关问题及解决办法
安装单机版elasticsearch相关细节问题
一.es与jdk的关系
由于es是使用Java语言实现的搜索引擎,所以在linux上安装es之前一定要保证自己的虚拟机上已经安装了对应版本的jdk;
1.简单介绍一下linux上安装jdk,下载jdk.gz安装包,上传到linux指定目录下,使用
tar -zxvf 命令进行解压;
2.配置环境变量进入 /etc/profile 文件中编辑,这里的配置就相当于在Window系统中配置全局的环境变量;
JAVA_HOME=/usr/local/jdk8/jdk1.8.0_271
PATH=PATH
CLASSPATH=.:JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
注:相关配置参数说明
1.JAVA_HOME=/usr/local/jdk8/jdk1.8.0_271 为安装的jdk的全局路径
2. linux下用冒号”:”来分隔路径
3. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值在设置环境变量时特别要注意不能把原来的值给覆盖掉了。
4. CLASSPATH中当前目录”.”不能丢掉。
5. export是把这三个变量导出为全局变量。
6. 大小写必须严格区分。
二.安装elasticsearch
官网下载相应的elasticsearch的.gz安装包上传到相应的linux目录下,使用命令
tar -zxvf 命令进行解压
启动
我们的elasticsearch是强依赖于我们的jdk环境,所以⼀定要安装对应的jdk,并且配置好相关的环境变量
mac/linux,打开软件的安装路径,进⼊到bin⽬录,执⾏sh elasticsearch.sh,守护进程的⽅式可以使⽤ sh elasticsearch.sh -d -p pid
windows,打开软件的安装路径,进⼊到bin⽬录,双击elasticsearch.bat
三.安装和使用过程中的注意事项
1.由于es的启动不能使用管理员root账号进行启动所以要给想用的es安装文件夹赋予新的用户:首先添加用户 :useradd -m aaa 设置密码: passwd aaa bbb
给es安装文件授权 :sudo chown - R aaa elasticsearch-6.1.0/
切换成普通用户:su aaa
2.由于linux中防火墙默认是开放的所以当外网访问时需要开放es的访问端口
如果当前linux中没用安装firewall(centos7以上使用这个命令)命令需要先进安装:
yum install firewalld
3.centos7中防火墙的相关操作
1、firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
3.配置firewalld-cmd
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
那怎么开启一个端口呢
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (–permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
四.在安装过程中可能会启动报错我们需要修改相关配置
问题一:[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
#切换到root用户修改
vim /etc/security/limits.conf
#在最后面追加下面内容
wangxilong hard nofile 65536
wangxilong soft nofile 65536
#注意wangxilong 是用户
问题二:[2]: max number of threads [1024] for user [elk] is too low, increase to at least [4096]
vim /etc/security/limits.conf
添加
wangxilong soft nproc 4096
wangxilong hard nproc 4096
同时修改/etc/security/limits.d
* soft nproc 4096
root soft nproc unlimited
问题三:[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#切换到root用户修改
修改sysctl文件:vi /etc/sysctl.conf ,增加下面配置项
增加改行配置:vm.max_map_count=655360
保存退出后,执行:
sysctl -p
问题四:[4]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
在elasticsearch.yml中加入下面命令即可
bootstrap.system_call_filter: false
问题五:ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
在elasticsearch的config目录下,修改elasticsearch.yml配置文件,将下面的配置加入到该配置文件中:
ip替换host1等,多节点请添加多个ip地址,单节点可写按默认来
#配置以下三者,最少其一
#[discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes]
cluster.initial_master_nodes: ["node-1"] #这里的node-1为node-name配置的值
五.elasticsearch中安装ik分词器
1. 下载ik分词器
关于ik分词器的版本选择这里需要注意的是,下载的ik分词器版本要与当前使用的elasticsearch版本完全一致,可以到github上下载相应的压缩包,linux环境下的ik分词器压缩包是一个 .zip结尾的包;
2. ik分词器安装
压缩包下载完成后将压缩包上传plugins目录下进行解压,解压后将原压缩包进行删除;
安装细节:由于ik分词器的插件包是一个**.zip**包,所以需要先安装unzip命令
yum install -y unzip
对zip进行解压
unzip elasticsearch-analysis-ik-1.10.0.zip
重启es后会发现已经加载了plugins中的ik插件;
3.修改默认分词器为ik分词器
其实很容易,只要在elasticsearch.yml中加入两行配置即可
index.analysis.analyzer.default.tokenizer : “ik_max_word”
index.analysis.analyzer.default.type : “ik”
还是提醒同学们要记得注意格式,尤其空格。
4.设置自定义分词器
虽然现在安装了ik分词器已经能满足我们的大部分需求了,但是还有一些词组使我们不想进行拆分的特殊词,接下来来说一下我们如何配置自定义分词器,步骤很简单,如下所示
1 配置自定义分词器
其实只要将我们plugins/ik/config/custom此目录下的mydict.dic文件中添加我们要自定义的词即可。
最后,除了启动es时候切换成新建的账号其余的操作还是使用root账户比较好,省的出现一些权限不足而报错的问题。
六.可视化工具kibana的安装和使用
1.现在与elasticsearche版本相同的kibana安装包上传至linux上的安装目录下,
使用tar -zxvf 安装包名 进行解压;
2.需要进行相应配置的修改
vim config/kibana.yml
# 放开注释,将默认配置改成如下:
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.202.128:9200"
kibana.index: ".kibana"
启动kibana命令为 sh kibana