本项目fork自bells/elasticsearch-analysis-dynamic-synonym
重构部分代码, 并支持以下的同步类型:
- 文件:
file - 远程:
remote - JDBC:
jdbc
| 插件版本 | ES版本 |
|---|---|
| master | 7.x -> master |
| 6.1.4 | 6.1.4 |
| 5.2.0 | 5.2.0 |
| 5.1.1 | 5.1.1 |
| 2.3.0 | 2.3.0 |
| 2.2.0 | 2.2.0 |
| 2.1.0 | 2.1.0 |
| 2.0.0 | 2.0.0 |
| 1.6.0 | 1.6.X |
./bin/elasticsearch-plugin install https://github.com/Houtaroy/elasticsearch-analysis-dynamic-synonym/releases/download/${版本号}/elasticsearch-analysis-dynamic-synonym-${版本号}.zip-
克隆或下载本仓库
-
mvn package -
将压缩文件
target/releases/elasticsearch-analysis-dynamic-synonym-${版本号}.zip的内容复制到${ES目录}/plugins/analysis-dynamic-synonym
{
"index": {
"analysis": {
"analyzer": {
"synonym": {
"tokenizer": "whitespace",
"filter": [
"remote_synonym"
]
}
},
"filter": {
"file_synonym": {
"type": "dynamic_synonym",
"synonym_type": "file",
"uri": "/dynamic_synonym/synonym.txt"
},
"remote_synonym": {
"type": "dynamic_synonym",
"synonym_type": "remote",
"uri": "https://localhost:8080/api/synonyms",
"interval": 30
},
"jdbc_graph": {
"type": "dynamic_synonym_graph",
"synonym_type": "jdbc",
"uri": "jdbc:mysql://localhost:3306/elasticsearch?allowPublicKeyRetrieval=true",
"driver_class_name": "com.mysql.cj.jdbc.Driver",
"username": "elasticsearch",
"password": "elasticsearch"
}
}
}
}
}| 名称 | 同步类型 | 必填 | 默认值 | 描述 |
|---|---|---|---|---|
| type | all | √ | dynamic_synonym/dynamic_synonym_graph |
|
| synonym_type | all | √ | file/remote/jdbc |
|
| uri | all | √ | 同义词文件URI | |
| interval | all | × | 60(同步类型是jdbc为3600) |
同义词刷新时间间隔, 单位秒 |
| expand | all | × | true | expand |
| lenient | all | × | false | lenient on exception thrown when importing a synonym |
| format | all | × | ' ' | synonym file format, for WordNet structure this can be set to wordnet |
| driver_class_name | jdbc |
√ | JDBC驱动类全路径名称 | |
| username | jdbc |
√ | JDBC连接用户名 | |
| password | jdbc |
√ | JDBC连接密码 | |
| synonym_sql | jdbc |
× | select synonym from t_synonym |
同义词查询语句, 返回结果为字符串列表 |
| version_sql | jdbc |
× | select version from t_synonym_version |
同义词版本查询语句, 返回结果为整形 |
当同步类型为jdbc时, 请将对应的JDBC驱动jar包复制到${ES目录}/plugins/analysis-dynamic-synonym
依据文件修改时间
获取请求头中的Last-Modified或ETag, 如果发生改变则刷新
- 执行同义词版本查询语句, 取第一行第一列结果与内存记录的版本进行比较
- 如果数据库中的版本较大, 执行同义词查询语句, 将所有行的第一列作为同义词结果进行刷新
注意: 文件编码应为utf-8