Elasticsearch使用問題總結
今天下載了elasticsearch的7.x版本,使用bin/elasticsearch -d 啟動后,報出如下錯誤:
1:can not run elasticsearch as root

原來,啟動的時候不能使用root用戶啟動,無奈,只能創建一個新用戶
用戶創建
- 創建用戶:
useradd -m es
- 設置密碼:
passwd es
更改文件擁有者(chown命令)
chown -R es:es /usr/local/java/elasticsearch-7.9.0/
1.命令格式:
chown [選項]... [所有者][:[組]] 文件...
2.命令功能:
通過chown改變文件的擁有者和群組。在更改文件的所有者或所屬群組時,可以使用用戶名稱和用戶識別碼設置。普通用戶不能將自己的文件改變成其他的擁有者。其操作權限一般為管理員。
3.命令參數:
必要參數:
-c 顯示更改的部分的信息
-f 忽略錯誤信息
-h 修復符號鏈接
-R 處理指定目錄以及其子目錄下的所有文件
-v 顯示詳細的處理信息
-deference 作用於符號鏈接的指向,而不是鏈接文件本身
切換用戶
su es
再次啟動成功啟動
2:報錯信息:
future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk1.8.0_211/jre] does not meet this requirement
解決辦法(講解):
由於Elasticsearch依賴於jdk,es和jdk有着對應的依賴關系。如果本地安裝了jdk8或者和es不匹配的版本就會報錯。
elasticsearh從7.0開始默認安裝了java運行環境,以便在沒有安裝java運行環境的機器上運行。如果配置了環境變量JAVA_HOME,則elasticsearh啟動時會使用JAVA_HOME作為java路徑,否則使用elasticsearh根目錄下jdk目錄為java路徑。
解決此問題:
linux:
修改elasticsearch-env
vi elasticsearch-7.9.0/bin/elasticsearch-env

3: 瀏覽器訪問localhost:9200 無法訪問, 需要開啟防火牆端口9200
開啟端口:9200 firewall-cmd --zone=public --add-port=9200/tcp --permanent 重啟防火牆: firewall-cmd --reload 查詢端口號9200 是否開啟: firewall-cmd --query-port=9200/tcp
4、再次訪問依然無法訪問,修改 elasticsearch.yml 配置文件,允許外網訪問。
vi /usr/local/java/elasticsearch-7.9.0/config/elasticsearch.yml

5: 再次啟動,哈哈,依然報錯

文件描述符:[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
解決:
vi /etc/security/limits.conf
追加以下內容: * soft nofile 65536 * hard nofile 65536 此文件修改后需要重新登錄用戶,才會生效
線程數:[2]: max number of threads [3795] for user [es] is too low, increase to at least [4096]
vi /etc/security/limits.conf
配置,如下: * soft nproc 2048 * hard nproc 4096
虛擬內存:[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解決:
vi /etc/sysctl.conf
追加以下內容: vm.max_map_count=655360 保存后,執行: sysctl -p
[4]: 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
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/java/elasticsearch-7.9.0/logs/elasticsearch.log
解決:
在elasticsearch的config目錄下,修改 elasticsearch.yml 配置文件,將下面的配置加入到該配置文件中:
cluster.initial_master_nodes: ["node-1"] #這里的node-1為node-name配置的值

再次啟動:

