## 一、下载软件
[https://www.elastic.co/cn/downloads/elasticsearch](https://www.elastic.co/cn/downloads/elasticsearch)
## 二、elasticsearch常见错误
### 2.1. root用户启动elasticsearch报错
Elasticsearch为了安全考虑,不让使用root启动,解决方法新建一个用户,用此用户进行相关的操作。如果你用root启动,会出现“java.lang.RuntimeException: can not runelasticsearch as root”错误,具体如下所示:
![](https://box.kancloud.cn/2f62de1381956d16ef3253cf0acceda7_1047x328.png)
**需要创建新用户来运行es**
#### 2.1.1. 创建新用户
~~~
adduser [用户名]
~~~
#### 2.1.2. 修改新用户的密码
~~~
passwd [用户名]
~~~
#### 2.1.3. 授权sudo
**新创建的用户并不能使用sudo命令,需要给他添加授权。**
1. 添加sudoers文件可写权限
~~~
chmod -v u+w /etc/sudoers
~~~
2. 修改sudoers文件
~~~
vim /etc/sudoers
~~~
3. 在sudoers文件中找到如下位置并添加如下内容
**\[用户名\] ALL=(ALL) ALL**(如需新用户使用sudo时不用输密码,把最后一个**ALL**改为**NOPASSWD:ALL**即可)
![](https://box.kancloud.cn/912037156d82e102510138b60f25ab23_836x154.png)
4. 收回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文件
> \* 代表所有用户
> ![](https://box.kancloud.cn/aec83ca7aa106148f5ddcdcc7338b379_402x137.png)
### 2.5. 外网访问设置
修改config目录下elasticsearch.yml文件
![](https://img.kancloud.cn/f5/4a/f54aa2d39f46c2dfad760442761bd320_1047x367.png)
![](https://img.kancloud.cn/fc/59/fc59c27732558f73541d1e2e52a42816_1051x250.png)
![](https://img.kancloud.cn/4f/55/4f554e2df63e28588d1631ce96d664ac_1169x310.png)
1. 修改network.host为`0.0.0.0`
2. 设置node.name参数
3. 设置cluster.initial\_master\_nodes参数:数组值需与参数node.name相同
### 2.6. elasticsearch-head插件连不上
修改config目录下elasticsearch.yml文件,在最后新增以下两个参数
~~~
http.cors.enabled: true
http.cors.allow-origin: "*"
~~~
### 2.7. 配置xpack
#### 2.7.1. 生成证书
到elastsearch的目录下执行以下命令
~~~
bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass ""
~~~
#### 2.7.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
network.host: 0.0.0.0
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的目录下执行以下命令,两种方式二选一
1. 自动生成密码
~~~
bin/elasticsearch-setup-passwords auto
~~~
2. 手动设置密码
~~~
bin/elasticsearch-setup-passwords interactive
~~~
## 六、验证密码是否设置成功
打开浏览器,输入我们的elasticsearch的网址,比如本地的[http://localhost:9200/](http://localhost:9200/) ,然后会弹出一个输入框,让我们输入账号和密码
![](https://img.kancloud.cn/3a/ae/3aae9454a85b502f4b4a3069b3150e88_789x441.png)
## 七、添加索引模板(非必需)
如果是单节点的es需要去掉索引的副本配置,不然会出现`unassigned_shards`
![](https://box.kancloud.cn/110285b894e470833669e7ecd01b802e_770x271.png)
### 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](https://github.com/medcl/elasticsearch-analysis-ik/releases)
> 这里你需要根据你的**Es的版本来下载对应版本的IK**
> ![](https://img.kancloud.cn/8f/b1/8fb159832079e74aa5efbfa2ffe19cb2_752x421.png)
### 8.2. 解压-->将文件复制到 es的安装目录/plugin/ik下面即可
完成之后效果如下:
![](https://box.kancloud.cn/edb60afc867b7d49e61d62c86112b926_411x385.png)
### 8.3. 重启es并检查插件是否安装成功
[http://192.168.28.130:9200/\_cat/plugins](http://192.168.28.130:9200/_cat/plugins)
![](https://box.kancloud.cn/f9128357af217ee06459172721c38e5c_764x155.png)
- springcloud
- springcloud的作用
- springboot服务提供者和消费者
- Eureka
- ribbon
- Feign
- feign在微服务中的使用
- feign充当http请求工具
- Hystrix 熔断器
- Zuul 路由网关
- Spring Cloud Config 分布式配置中心
- config介绍与配置
- Spring Cloud Config 配置实战
- Spring Cloud Bus
- gateway
- 概念讲解
- 实例
- GateWay
- 统一日志追踪
- 分布式锁
- 1.redis
- springcloud Alibaba
- 1. Nacos
- 1.1 安装
- 1.2 特性
- 1.3 实例
- 1. 整合nacos服务发现
- 2. 整合nacos配置功能
- 1.4 生产部署方案
- 环境隔离
- 原理讲解
- 1. 服务发现
- 2. sentinel
- 3. Seata事务
- CAP理论
- 3.1 安装
- 分布式协议
- 4.熔断和降级
- springcloud与alibba
- oauth
- 1. abstract
- 2. oauth2 in micro-service
- 微服务框架付费
- SkyWalking
- 介绍与相关资料
- APM系统简单对比(zipkin,pinpoint和skywalking)
- server安装部署
- agent安装
- 日志清理
- 统一日志中心
- docker安装部署
- 安装部署
- elasticsearch 7.x
- logstash 7.x
- kibana 7.x
- ES索引管理
- 定时清理数据
- index Lifecycle Management
- 没数据排查思路
- ELK自身组件监控
- 多租户方案
- 慢查询sql
- 日志审计
- 开发
- 登录认证
- 链路追踪
- elk
- Filebeat
- Filebeat基础
- Filebeat安装部署
- 多行消息Multiline
- how Filebeat works
- Logstash
- 安装
- rpm安装
- docker安装Logstash
- grok调试
- Grok语法调试
- Grok常用表达式
- 配置中常见判断
- filter提取器
- elasticsearch
- 安装
- rpm安装
- docker安装es
- 使用
- 概念
- 基础
- 中文分词
- 统计
- 排序
- 倒排与正排索引
- 自定义dynamic
- 练习
- nested object
- 父子关系模型
- 高亮
- 搜索提示
- kibana
- 安装
- docker安装
- rpm安装
- 整合
- 收集日志
- 慢sql
- 日志审计s
- 云
- 分布式架构
- 分布式锁
- Redis实现
- redisson
- 熔断和降级