linux下安装ElasticSearch

一、下载软件
二、elasticsearch常见错误
2.1. root用户启动elasticsearch报错
2.1.1. 创建新用户
2.1.2. 修改新用户的密码
2.1.3. 授权sudo
2.1.4. 赋值elasticsearch文件夹的权限给新用户
2.2. JVM虚拟机内存不足
2.3. max_map_count过小
2.4. max file descriptors过小
2.5. 外网访问设置
2.6. elasticsearch-head插件连不上
2.8. 配置xpack
2.8.1. 生成证书
2.8.2. 修改配置
三、最终elasticsearch.yml的配置
四、运行elasticsearch
4.1 切换新用户
4.2 后台运行
五、初始化密码
六、验证密码是否设置成功
七、添加索引模板(非必需)
7.1. 更新已有索引(非必需)
7.2. 设置索引模板
7.2.1. 系统日志
7.2.2. 慢sql日志
7.2.3. 埋点日志
八、安装IK分词器
8.1. 下载
8.2. 解压-->将文件复制到 es的安装目录/plugin/ik下面即可
8.3. 重启es并检查插件是否安装成功
一、下载软件
https://www.elastic.co/cn/downloads/elasticsearch

二、elasticsearch常见错误
2.1. root用户启动elasticsearch报错
Elasticsearch为了安全考虑,不让使用root启动,解决方法新建一个用户,用此用户进行相关的操作。如果你用root启动,会出现“java.lang.RuntimeException: can not runelasticsearch as root”错误,具体如下所示:

需要创建新用户来运行es

2.1.1. 创建新用户
adduser [用户名]
2.1.2. 修改新用户的密码
passwd [用户名]
2.1.3. 授权sudo
新创建的用户并不能使用sudo命令,需要给他添加授权。

添加sudoers文件可写权限
chmod -v u+w /etc/sudoers
修改sudoers文件
vim /etc/sudoers
在sudoers文件中找到如下位置并添加如下内容
[用户名] ALL=(ALL) ALL(如需新用户使用sudo时不用输密码,把最后一个ALL改为NOPASSWD:ALL即可)

收回sudoers文件可写权限
chmod -v u-w /etc/sudoers
2.1.4. 赋值elasticsearch文件夹的权限给新用户
改变文件夹及所有子文件(夹)所属用户和用户组

chown -R zlt:zlt elasticsearch-6.6.1

2.2. JVM虚拟机内存不足
错误:“JavaHotSpot(TM) 64-Bit Server VM warning: INFO: error='Cannotallocate memory' (errno=12)”表示内存不足,其配置文件为config目录下的jvm.options,默认为2g,可以修改为1g。

2.3. max_map_count过小
错误“max virtual memory areas vm.max_map_count [65530]is too low, increase to at least [262144]”,max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量,系统默认是65530,修改成655360。

在/etc/sysctl.conf文件最后添加一行

vm.max_map_count=655360

并执行命令

sysctl -p

2.4. max file descriptors过小
错误“max file descriptors [65535] for elasticsearchprocess is too low, increase to at least [65536]”,maxfile descriptors为最大文件描述符,设置其大于65536即可。

解决方法是修改/etc/security/limits.conf文件

  • 代表所有用户

2.5. 外网访问设置
修改config目录下elasticsearch.yml文件

修改network.host为0.0.0.0
设置node.name参数
设置cluster.initial_master_nodes参数:数组值需与参数node.name相同

2.6. elasticsearch-head插件连不上
修改config目录下elasticsearch.yml文件,在最后新增以下两个参数

http.cors.enabled: true
http.cors.allow-origin: "*"

2.8. 配置xpack
2.8.1. 生成证书
到elastsearch的目录下执行以下命令

bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
2.8.2. 修改配置
修改config目录下elasticsearch.yml文件,在最后新增以下参数

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

三、最终elasticsearch.yml的配置
cluster.name: my-es

http.cors.enabled: true

node.name: node-1
cluster.initial_master_nodes: ["node-1"]

http.cors.enabled: true
http.cors.allow-origin: "*"

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

四、运行elasticsearch
4.1 切换新用户
su zlt
4.2 后台运行
bin/elasticsearch -d

五、初始化密码
到elastsearch的目录下执行以下命令,两种方式二选一

自动生成密码
bin/elasticsearch-setup-passwords auto
手动设置密码
bin/elasticsearch-setup-passwords interactive

六、验证密码是否设置成功
打开浏览器,输入我们的elasticsearch的网址,比如本地的http://localhost:9200/ ,然后会弹出一个输入框,让我们输入账号和密码

七、添加索引模板(非必需)
如果是单节点的es需要去掉索引的副本配置,不然会出现unassigned_shards

7.1. 更新已有索引(非必需)
如果已存在 sys-log-* 或者 mysql-slowlog-* 的索引才需要执行以下语句
需要修改IP和密码

curl -XPUT http://192.168.28.130:9200/sys-log-*/_settings
-H 'Content-Type: application/json'
-u elastic:qEnNfKNujqNrOPD9q5kb
-d '{
"index" : {
"number_of_replicas" : 0
}
}'

curl -XPUT http://192.168.28.130:9200/mysql-slowlog-*/_settings
-H 'Content-Type: application/json'
-u elastic:qEnNfKNujqNrOPD9q5kb
-d '{
"index" : {
"number_of_replicas" : 0
}
}'

7.2. 设置索引模板
7.2.1. 系统日志
需要修改IP和密码

curl -XPUT http://192.168.28.130:9200/_template/template_sys_log
-H 'Content-Type: application/json'
-u elastic:qEnNfKNujqNrOPD9q5kb
-d '{
"index_patterns" : ["sys-log-*"],
"order" : 0,
"settings" : {
"number_of_replicas" : 0
},
"mappings": {
"properties": {
"message": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"analyzer": "ik_max_word"
},
"pid": {
"type": "text"
},
"serverPort": {
"type": "text"
},
"logLevel": {
"type": "text"
},
"traceId": {
"type": "text"
}
}
}
}'
7.2.2. 慢sql日志
需要修改IP和密码

curl -XPUT http://192.168.28.130:9200/_template/template_sql_slowlog
-H 'Content-Type: application/json'
-u elastic:qEnNfKNujqNrOPD9q5kb
-d '{
"index_patterns" : ["mysql-slowlog-*"],
"order" : 0,
"settings" : {
"number_of_replicas" : 0
},
"mappings": {
"properties": {
"query_str": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"analyzer": "ik_max_word"
}
}
}
}'
7.2.3. 埋点日志
需要修改IP和密码

curl -XPUT http://192.168.28.130:9200/_template/template_point_log
-H 'Content-Type: application/json'
-u elastic:qEnNfKNujqNrOPD9q5kb
-d '{
"index_patterns" : ["point-log-*"],
"order" : 0,
"settings" : {
"number_of_replicas" : 0
}
}'

八、安装IK分词器
查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索的句子进行分词,所以这里就需要更加智能的分词器IK分词器了

8.1. 下载
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
这里你需要根据你的Es的版本来下载对应版本的IK

8.2. 解压-->将文件复制到 es的安装目录/plugin/ik下面即可
完成之后效果如下:

8.3. 重启es并检查插件是否安装成功
http://192.168.28.130:9200/_cat/plugins

你可能感兴趣的:(linux下安装ElasticSearch)