linux 安装 elastic search
-
下载 elastic search 的压缩安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz -
解压压缩包到自己的某个目录
tar -xvf elasticsearch-7.3.0-linux-x86_64.tar.gz -
如果是 root 用户则在启动的时候会报错。
[o.e.b.ElasticsearchUncaughtExceptionHandler] [localhost.localdomain] uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.0.0.jar:7.0.0] at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.0.0.jar:7.0.0] at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.0.0.jar:7.0.0] at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-7.0.0.jar:7.0.0] at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.0.0.jar:7.0.0] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.0.0.jar:7.0.0] at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.0.0.jar:7.0.0] Caused by: java.lang.RuntimeException: can not run elasticsearch as root at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:102) ~[elasticsearch-7.0.0.jar:7.0.0] at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:169) ~[elasticsearch-7.0.0.jar:7.0.0] at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:325) ~[elasticsearch-7.0.0.jar:7.0.0] at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.0.0.jar:7.0.0] ... 6 more -
需要创建一个用户
adduser es (创建一个 es 用户) passwd es (需要输入两次自己设置的密码) chown -R es elasticsearch-7.3.0 (将 elastic search 主目录权限开放给 es 用户) su es (切换到 es 用户) -
修改 elasticsearch.yml 文件
node.name: node-1 (设置该节点的名称) network.host: {你的主机IP } (设置 elastic search 所在的主机) cluster.initial_master_nodes: ["node-1"] (设置该集群中作为 master 的节点名称) -
在新用户 es 中启动 elastic search
./elasticsearch (在 /usr/local/elasticsearch-7.0.0/bin 目录下进行后台启动该工具) -
再打开一个终端,测试是否安装成功
curl -XGET 'http://localhost:9200/?pretty' 如果输出以下信息表示成功: { "name" : "localhost.localdomain", "cluster_name" : "elasticsearch", "cluster_uuid" : "nHwwkFEMQ46-lMSRNEZgsg", "version" : { "number" : "7.3.0", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "de777fa", "build_date" : "2019-07-24T18:30:11.767338Z", "build_snapshot" : false, "lucene_version" : "8.1.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" } -
关闭 elastic search
jps|grep Elasticsearch(找到 pid) kill -9 7145
linux 安装配套的可视化工具 kibana
-
下载 kibana 的压缩安装包
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.0-linux-x86_64.tar.gz -
解压到自己的某个目录
tar -xvf kibana-7.3.0-linux-x86_64.tar.gz -
把 kibana 主目录的权限给 es 用户
chown -R es kibana-7.3.0-linux-x86_64 -
修改 kibana.yml 文件
server.host: "0.0.0.0" (允许远程访问) elasticsearch.hosts: ["http://{你的IP}:9200"] (设置自己的 elastic search 服务的 IP 和 端口) -
在 kibana 主目录下的 bin 目录启动 kibana
./kibana -
在浏览器中访问 {你的IP}:5601 ,如果有 kibana 面板内容显示,说明配置成功
配置 jieba 插件
-
下载 jieba 的安装压缩包
wget https://github.com/sing1ee/elasticsearch-jieba-plugin/archive/v7.0.0.zip -
解压到某个目录,然后进入该目录
unzip v7.0.0.zip cd elasticsearch-jieba-plugin-7.0.0/ -
安装并配置 gradle
wget https://downloads.gradle-dn.com/distributions/gradle-5.6-bin.zip unzip gradle-5.6-bin.zip (解压出的文件夹放到某个目录) export PATH=$PATH:{ grable 主目录}/gradle-5.6/bin (在 ~/.bash_profile 中添加,然后更新 ~/.bash_profile) gradle -v (如果有输出则说明配置正常) -
在 elasticsearch-jieba-plugin-7.0.0/ 目录下使用 gradle 生成压缩文件
gradle pz (如果输入 BUILD SUCCESSFUL 表示成功) -
当前目录生成的 build/distributions/elasticsearch-jieba-plugin-7.0.0.zip 拷贝elasticsearch-7.0.0 目录下的 plugins 文件夹中
-
将 elasticsearch-jieba-plugin-7.0.0.zip 解压之后,删除压缩包即可,最后如果没有自动生成有 jieba 目录,则自己创建,最后的目录结构如下
*elasticsearch-7.0.0 *plugins *jieba dic jieba-analysis-1.0.2.jar elasticsearch-jieba-plugin-7.0.0.jar plugin-descriptor.properties plugin.xml -
将 plugin-descriptor.properties 中的 elasticsearch.version 改为 7.3.0 ,然后 重新启动 elastic search
bug 处理
1.日志显示如下错误:
[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: failed to obtain node locks, tried [[/usr/local/elasticsearch-7.0.0/data]] with lock id [0]; maybe these locations are not writable or multiple nodes were started without increasing [node.max_local_storage_nodes] (was [1])?
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.0.0.jar:7.0.0]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.0.0.jar:7.0.0]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.0.0.jar:7.0.0]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-7.0.0.jar:7.0.0]
at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.0.0.jar:7.0.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.0.0.jar:7.0.0]
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.0.0.jar:7.0.0]
这是因为已经打开了一个 elastic searc 的服务,找出之前的进程关闭即可。
2.日志显示如下错误:
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
在 root 权限下 vi /etc/sysctl.conf ,然后添加 vm.max_map_count= 655360 ,最后执行 sudo sysctl -p ,重新启动 es 即可。
3.日志显示如下错误:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
在 root 权限下 vi /etc/security/limits.conf ,添加以下两行然后重启 es :
* hard nofile 65536
* soft nofile 65536
4.日志显示如下错误:
java.io.FileNotFoundException: /nas/elasticsearch-7.3.2/logs/elasticsearch_server.json (Permission denied)
类似的错误都是因为权限问题,只需要在 root 权限下把 logs 的所属修改一下:chown -R es:es logs/
然后切换到 es 用户重启即可。