1.首先是安装之后的启动问题
大部分工作人员或者学生使用的jdk版本是 jdk1.8版本,可是es随着版本的更新所依赖的jdk版本也变高了
-
Elasticsearch 5 需要 Java 8 以上版本;
-
Elasticsearch 6.5 开始支持 Java 11;
-
Elasticsearch 7.0 开始,内置了 Java 环境,所以说,安装 7.0+ 版本会方便很多。
此时会遇到一个问题: 就是大部分人 都会再自己的环境变量中 设置 JAVA_HOME 此时你的es不会走他的内置jdk而是走你的JAVA_HOME
然后你的es会启动失败并会报错:
future versions of Elasticsearch will require Java 11; your Java version from [D:java_jdkjdk1.8jre] does not meet this requirement
future versions of Elasticsearch will require Java 11; your Java version from [D:java_jdkjdk1.8jre] does not meet this requirement
Warning: with JDK 8 on Windows, Elasticsearch may be unable to derive correcter gonomic settings due to a JDK issue (JDK-8074459). Please use a newer version of Java.
Warning: MaxDirectMemorySize may have been miscalculated due to JDK-8074459. Please use a newer version of Java or set MaxDirectMemorySize explicitly.
大致意思就是你的jdk是1.8版本 你配不上我 所以你启动失败了.
然后我开始上网找各种资料进行解决该问题:但是最终都没有什么好的办法 ,因为这个版本太新了.
解决办法: 第一步我的是在windows上进行安装的:那么你只需要 elasticsearch-env.bat文件(在你的bin目录中)
在if "%JAVA_HOME%" == "" (...)
这部分上方 进行添加
set JAVA_HOME="%ES_HOME%jdk"
即可就能解决这个问题.
如果你是在linux中进行安装es的话 你需要更改 elasticsearch-env(也是在你的bin目录中) 文件 , 两个文件的位置都是在 bin包下再具体点是elasticsearch-7.8.0-windows-x86_64elasticsearch-7.8.0in下面 就可以找到两个文件,都是添加
set JAVA_HOME="%ES_HOME%jdk"这行代码, 但是再linux中添加的具体位置我不太清楚,和上面的应该是大同小异.
下面是完整的配置文件中的信息
set SCRIPT=%0
rem determine Elasticsearch home; to do this, we strip from the path until we
rem find bin, and then strip bin (there is an assumption here that there is no
rem nested directory under bin also named bin)
for %%I in (%SCRIPT%) do set ES_HOME=%%~dpI
:es_home_loop
for %%I in ("%ES_HOME:~1,-1%") do set DIRNAME=%%~nxI
if not "%DIRNAME%" == "bin" (
for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfI
goto es_home_loop
)
for %%I in ("%ES_HOME%..") do set ES_HOME=%%~dpfI
rem now set the classpath
set ES_CLASSPATH=!ES_HOME!lib*
set HOSTNAME=%COMPUTERNAME%
if not defined ES_PATH_CONF (
set ES_PATH_CONF=!ES_HOME!config
)
rem now make ES_PATH_CONF absolute
for %%I in ("%ES_PATH_CONF%..") do set ES_PATH_CONF=%%~dpfI
set ES_DISTRIBUTION_FLAVOR=default
set ES_DISTRIBUTION_TYPE=zip
set ES_BUNDLED_JDK=true
cd /d "%ES_HOME%"
rem now set the path to java, pass "nojava" arg to skip setting JAVA_HOME and JAVA
if "%1" == "nojava" (
exit /b
)
rem compariing to empty string makes this equivalent to bash -v check on env var
rem and allows to effectively force use of the bundled jdk when launching ES
rem by setting JAVA_HOME=
set JAVA_HOME="%ES_HOME%jdk"
if "%JAVA_HOME%" == "" (
set JAVA="%ES_HOME%jdkinjava.exe"
set JAVA_HOME="%ES_HOME%jdk"
set JAVA_TYPE=bundled jdk
) else (
set JAVA="%JAVA_HOME%injava.exe"
set JAVA_TYPE=JAVA_HOME
)
if not exist !JAVA! (
echo "could not find java in !JAVA_TYPE! at !JAVA!" >&2
exit /b 1
)
rem do not let JAVA_TOOL_OPTIONS slip in (as the JVM does by default)
if defined JAVA_TOOL_OPTIONS (
echo warning: ignoring JAVA_TOOL_OPTIONS=%JAVA_TOOL_OPTIONS%
set JAVA_TOOL_OPTIONS=
)
rem JAVA_OPTS is not a built-in JVM mechanism but some people think it is so we
rem warn them that we are not observing the value of %JAVA_OPTS%
if defined JAVA_OPTS (
(echo|set /p=warning: ignoring JAVA_OPTS=%JAVA_OPTS%; )
echo pass JVM parameters via ES_JAVA_OPTS
)
rem check the Java version
%JAVA% -cp "%ES_CLASSPATH%" "org.elasticsearch.tools.java_version_checker.JavaVersionChecker" || exit /b 1
2.解决ElasticSearch7.8.0版本的集成ik分词器
集成分词器使用网上的https://github.com/medcl/elasticsearch-analysis-ik 这个地址进行下载压缩包也好还是使用git clone也好,最后下载的都是jar包的形式,所以 放入到你的plugins中都不能进行解析.
我找到的一种方便的方式 就是使用 官方文档中的第二种方式,使用cmd命令行的方式,非常简单,速度也比较快
1. 找到你的es中的bin目录:
在蓝色区域部分输入cmd 会打开该目录路径下的cmd命令行形式
2.在cmd中直接输入直接输入
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.0/elasticsearch-analysis-ik-6.3.0.zip
注意:
这两个地方的版本要换成自己的es对应的版本即可.
这样你就集成ik分词器成功了.