1. 程式人生 > >elasticsearch 啟動時,指定jdk的版本

elasticsearch 啟動時,指定jdk的版本

環境

伺服器:centos6
作業系統:win7
工具:CRT
elasticsearch:6.0.0

場景

拿我公司舉例,我公司目前都是使用jdk1.7,並且線上已經有很多程式在跑啦!所以通過修改環境的方式,肯定是不行,而啟動elasticsearch.6.0,有需要jdk8

修改啟動指令碼

這種情況下,我們就需要在啟動elasticsearch時,就需要指定jdk版本。
即修改elasticsearch的啟動指令碼(elasticsearch_HOME/bin/elasticsearch

[[email protected] elasticsearch-6.0.0]# vim bin/elasticsearch
# 新增以下程式碼 export JAVA_HOME=/home/yutao/jdk1.8.0_121/ export PATH=$JAVA_HOME/bin:$PATH if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="/home/yutao/jdk1.8.0_121/bin/java" else JAVA=`which java` fi

這裡我也給我完整的檔案:

#!/bin/bash

# CONTROLLING STARTUP:
#
# This script relies on a few environment variables to determine startup
# behavior, those variables are: # # ES_PATH_CONF -- Path to config directory # ES_JAVA_OPTS -- External Java Opts on top of the defaults set # # Optionally, exact memory values can be set using the `ES_JAVA_OPTS`. Note that # the Xms and Xmx lines in the JVM options file must be commented out. Example
# values are "512m", and "10g". # # ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch # 我新增的 start export JAVA_HOME=/home/yutao/jdk1.8.0_121/ export PATH=$JAVA_HOME/bin:$PATH # 我新增的 end source "`dirname "$0"`"/elasticsearch-env parse_jvm_options() { if [ -f "$1" ]; then echo "`grep "^-" "$1" | tr '\n' ' '`" fi } ES_JVM_OPTIONS="$ES_PATH_CONF"/jvm.options ES_JAVA_OPTS="`parse_jvm_options "$ES_JVM_OPTIONS"` $ES_JAVA_OPTS" # 我新增的 start if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="/home/yutao/jdk1.8.0_121/bin/java" else JAVA=`which java` fi # 我新增的 end # manual parsing to find out, if process should be detached if ! echo $* | grep -E '(^-d |-d$| -d |--daemonize$|--daemonize )' > /dev/null; then exec \ "$JAVA" \ $ES_JAVA_OPTS \ -Des.path.home="$ES_HOME" \ -Des.path.conf="$ES_PATH_CONF" \ -cp "$ES_CLASSPATH" \ org.elasticsearch.bootstrap.Elasticsearch \ "[email protected]" else exec \ "$JAVA" \ $ES_JAVA_OPTS \ -Des.path.home="$ES_HOME" \ -Des.path.conf="$ES_PATH_CONF" \ -cp "$ES_CLASSPATH" \ org.elasticsearch.bootstrap.Elasticsearch \ "[email protected]" \ <&- & retval=$? pid=$! [ $retval -eq 0 ] || exit $retval if [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; then sleep $ES_STARTUP_SLEEP_TIME fi if ! ps -p $pid > /dev/null ; then exit 1 fi exit 0 fi exit $?

這樣就修改完畢;

啟動時,不要用root使用者,被官方禁止啦!會報錯的!

還有我發現,有時修改明明對了,啟動時,還是報:

[[email protected] elasticsearch-6.0.0]# bin/elasticsearch
the minimum required Java version is 8; your Java version from [/usr/java/jdk1.7.0_51/jre] does not meet this requirement

有時又正常啦,不明白!

參考地址: