动态更新同义词插件适配
非热更新的同义词配置
elasticsearch-analysis-dynamic-synonym 插件可以动态更新同义词,但github上只有5.1.1的版本了,不适配es6.8.1,通过修改源码适配6.8.1。
首先从github上下载5.1.1的源码和插件压缩包
github地址
下载后解压源码包,并导入idea
POM文件修改
修改如下两个版本号
源码修改
由于修改了导入的elasticsearch版本,源码有些地方会报错,修改DynamicSynonymFilter下的getLogger,并同时修改其它类里的getLogger报错的地方:
// public static Logger logger = ESLoggerFactory.getLogger("dynamic-synonym");
// 6.8.1的es去掉了ELLoggerFactory,修改为Loggers
public static Logger logger = Loggers.getLogger(String.class,"dynamic-synonym");
修改LocalSynonymFile下的getReader,新增一个newBufferedReader方法(6.8.1没有这个方法,从5.1.1的源码里把newBufferedReader方法给copy出来)
/**
* Opens the given url for reading returning a {@code BufferedReader} that may be
* used to read text from the URL in an efficient manner. Bytes from the
* file are decoded into characters using the specified charset.
*/
// copy from elasticsearch-5.1.1.jar source code
public static BufferedReader newBufferedReader(URL url, Charset cs) throws IOException {
CharsetDecoder decoder = cs.newDecoder();
Reader reader = new InputStreamReader(url.openStream(), decoder);
return new BufferedReader(reader