648cb4c2
tangwang
ES docs
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
插件地址:
https://gitcode.com/sing1ee/elasticsearch-jieba-plugin/tree/8.4.1?init=initRepo
安装参考文档:
https://blog.csdn.net/weixin_42326851/article/details/124615116
简明步骤
git clone git@gitcode.com:sing1ee/elasticsearch-jieba-plugin.git
cd elasticsearch-jieba-plugin
git checkout 8.4.1
# 注意如果Elasticsearch不是8.4.1,需要按照readme修改配置文件,包括ES版本、target JAVA版本
# 查看ES版本
# bin/elasticsearch --version
git submodule update --init --recursive
gradle wrapper
./gradlew pz
TODO 拷贝到插件目录
检查
bin/elasticsearch-plugin list
测试
新建POST请求: http://localhost:9200/_analyze
请求body:
{
"analyzer": "jieba_index",
"text": "美国伊拉克"
}
详细步骤
1. 安装gradle:
到这里找到下载地址:https://services.gradle.org/distributions/
注意要用7.6.4 版本(之前用8.6版本出错,改为7.6.4好了)
wget下来二进制包(zip),解压到某个目录(~/.env下),配置好PATH:
~/.bashrc添加:
export GRADLE_HOME="$HOME/.env/gradle-7.6.4"
export PATH=${GRADLE_HOME}/bin::${PATH}
2. 拉插件(elasticsearch-jieba-plugin)拉下来、打包
注意要用ssh、不要用https clone(用https,clone下来没问题,init就出问题,没找到原因。重新输密码、上传公钥、清除knownhosts,都不行):
git clone git@gitcode.com:sing1ee/elasticsearch-jieba-plugin.git
cd elasticsearch-jieba-plugin
git checkout 8.4.1
git submodule update --init --recursive
/usr/share/elasticsearch/bin/elasticsearch --version
得到版本号:8.12.2
修改两个文件的ES版本:
src/main/resources/plugin-descriptor.properties
build.gradle (里面有两处修改)
然后打包:
gradle wrapper
./gradlew pz
打包好的插件在目录: ./build/distributions
gradlew pz又出错,提示找不到tools.jar:Could not find tools.jar. Please check that /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el8_4.x86_64/jre contains a valid JDK installation.
有的人是因为没配置JAVA_HOME,我这里,根据错误提示,路径找对了,但是这个路径下确实没有tools.jar。
因此只能重装jdk。
yum install java-1.8.0-openjdk
重装了,原来的jdk目录不存在了,有了新的:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-3.el8.x86_64/
但是这个目录同样没有tools.jar 。后面找到资料,openjdk后面加个新,安装所有java1.8相关的东西,这个问题得到了修复:
yum -y install java-1.8.0-openjdk*
又出了另外一个问题:
Execution failed for task ':compileJava'.
> 无效的源发行版: 18
原因是我们指定的源发行版不匹配Java编译器的版本。
1. 确保这里配置对了
sourceCompatibility = JavaVersion.VERSION_18 // 不同版本的es,需要不同版本的java环境,注意修改这里
targetCompatibility = JavaVersion.VERSION_18 // 不同版本的es,需要不同版本的java环境,注意修改这里
2. elasticsearch --version 提示ES的java版本是21,因此将以上配置改为21。 为了简化问题,决定回退ES版本,改回8.4.1,这样插件的配置文件都不用改了,直接用8.4.1分支就行。
3. java版本是1.8,不是18(之前以为1.8就是18,卡在这里大半天)。重新安装jdk18就好了。
javac -version
javac 1.8.0_362
# 注意yum里面只到17,没有18,下载jdk18,以rpm方式安装:https://www.oracle.com/java/technologies/javase/jdk18-archive-downloads.html
# 注意如果之前自己手动配置了JAVA_HOME,要把他删掉。
yum remove java-1.8.0-* (之前yum remove java*,有可能有问题)
rpm -ivh jdk-18.0.2.1_linux-x64_bin.rpm
现在三个的版本就都对了:
javac -version
javac 18.0.2.1
[root@192 ~]# elasticsearch --version
warning: ignoring JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk; using bundled JDK
Version: 8.4.1, Build: rpm/2bd229c8e56650b42e40992322a76e7914258f0c/2022-08-26T12:11:43.232597118Z, JVM: 18.0.2
gradle --version (gradle用的jdk是1.8 不用管,插件的readme上注明gradle版本7.6匹配ES版本8.4.1)
Gradle 7.6.4
JVM: 1.8.0_362
|