企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一、下载软件 [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)