# ik-mysql
**Repository Path**: DocYu/ik-mysql
## Basic Information
- **Project Name**: ik-mysql
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-27
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ik-mysql
## 利用mysql实时更新ElasticSearch热词
### 1、先下载相应ik分词器版本
地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
### 2、修改相应代码
* `config`添加`jdbc-reload.properties`文件
* 在`Dictionary.java`中添加
+ `loadMySQLExtDict` 和 `loadMySQLStopwordDict` 方法
+ `initial` 方法中添加 `new Thread(new HotDicReloadThread()).start(); `
```
if (singleton == null) {
singleton = new Dictionary(cfg);
singleton.loadMainDict();
singleton.loadSurnameDict();
singleton.loadQuantifierDict();
singleton.loadSuffixDict();
singleton.loadPrepDict();
singleton.loadStopWordDict();
new Thread(new HotDicReloadThread()).start();
if (cfg.isEnableRemoteDict()) {
// 建立监控线程
for (String location : singleton.getRemoteExtDictionarys()) {
// 10 秒是初始延迟可以修改的 60是间隔时间 单位秒
pool.scheduleAtFixedRate(new Monitor(location), 10, 60, TimeUnit.SECONDS);
}
for (String location : singleton.getRemoteExtStopWordDictionarys()) {
pool.scheduleAtFixedRate(new Monitor(location), 10, 60, TimeUnit.SECONDS);
}
}
return singleton;
}
```
+ `loadMainDict`方法的最后添加 `this.loadMySQLExtDict();`
+ `loadStopWordDict`方法的最后添加 `this.loadMySQLStopwordDict();`
* `dic` 目录下添加 `HotDicReloadThread.ava` 文件
* `plugin.xml` 文件中添加
/
true
true
mysql:mysql-connector-java
* `pom.xml`添加
mysql
mysql-connector-java
5.1.46
### 3、打包上传
* `mvn package`打包之后在`target`目录之下会有一个`releases`目录
* 将该目录下的压缩包上传至es的`plugins`目录之下进行解压
* 解压之后会有会生成`elasticsearch`和`mysql-connector-java-5.1.46.jar` 再将`mysql`的`jar`包移入`elasticsearch`之下重启es即可
## 注意:
* **所下载的版本是对应elasticSearch的版本
但是pom中所写的`5.6.16`版本不一定是你所下的版本所以修改版本即可**
## **异常处理:**
* `java.sql.SQLException: No suitable driver found for jdbc`
`loadMySQLExtDict和loadMySQLStopwordDict`方法中的 `Connection、Statement和ResultSet`所引的包不对不是mysql的
* `java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader")`
修改 java 目录 `java/jre/lib/security` 中 `java.policy`
在文件最后添加
>`permission java.security.AllPermission`