文章目录
最近做国产化软件 金蝶ase 适配工作,本来以前是用的 elasticsearch,使用 elasticsearch-rest-high-level-client 调用 es。而金蝶ase 是基于 opensearch 改造的,所以先尝试代码能否兼容。经过各类 文档操作api 测试,最终发现 index、update、delete、bulk 的响应体解析异常,究其原因发现 金蝶ase 没有返回
"type":"_doc"
,而elasticsearch-rest-high-level-client
中的DocWriteResponse
构造方法断言type
不为 null。
![在这里插入图片描述]
一、下载源码
先 git clone https://github.com/elastic/elasticsearch.git ,分支都是大版本例如7.6、7.9,我要找7.6.2 切 7.6 版本的,但是构建的时候有一些问题需要修改版本。所以最好从 release 页面 https://github.com/elastic/elasticsearch/releases?q=7.6.2&expanded=true,找到对应的小版本,例如7.6.2,下载源码压缩包 source code。
二、解决报错
1.gradle 压缩包下载超时
es 项目使用的是 gradle,我们开局先打开 build.gradle 这个文件,点击刷新按钮,它会下载 gradle 的压缩包,可能会连接超时
在设置里设置科学上网软件的端口就能顺利下载了。
2.gradle 要求至少 java 11
这里很坑,切换项目 project structure 里的 jdk 不管用,必须改设置里的 gradle jvm
3.gradle 插件下载失败
再 buildSrc\build.gradle 文件中,修改仓库地址
repositories {
center()
mavenCentral()
maven { url 'https://plugins.gradle.org/m2/' } // 添加Gradle插件仓库
maven { url 'https://maven.aliyun.com/repository/public' } // 添加Gradle插件仓库
maven { url 'https://maven.aliyun.com/repository/spring' } // 添加Gradle插件仓库
}
4.es 插件要求 JAVA_HOME 为 java 13
es 插件编译需要用到 java 13,直接从 idea 随便下个 java 13,然后配置一下系统环境变量,JAVA_HOME 配置 java 13 目录,再添加 %JAVA_HOME%\bin 到 PATH,这一步必须重启电脑,idea 内的环境变量还是旧的。
5.分支错误
提示分支不正确,由于我这个项目是直接下载的源码,所以先 git init,建个 main 分支,然后随便 commit 一点东西。
后面就没错误了,坐等完成
三、修改源码并构建
1.构造方法添加判断
2.构建发布
编辑buildSrc/build.gradle,最后判断是否构建快照,从 loadedProps 读取配置
在 version.propertis 中添加 build.snapshot = false,直接构建发布版本而不是快照版本。
但是这时缺少源码,再构建源码的 jar 包
3.把生成的 jar 包放到私有仓库
删掉旧文件,换成新文件。
刷一下maven,发现已经是修改后的代码了。