Elasticsearch实现不同索引使用不同的ik分词器词典

需求说明

  • 原本在IK中,所有索引共用一个词典,热更新词库也是对所有的索引有效。
  • 本文实现,不同的索引,可以配置不同的词典数据
  • 词典数据来自于接口,可以是文件,可以是关系型数据库mysql等

提供数据词典接口服务

  • 编写一个Springboot项目

  • 提供词典接口 DicController.java。数据可以根据索引名称去数据库查询,这里简单的写数据在内存中。

  • 代码解读:

    • 提供一个接口,根据索引名称,获取到对应的词典数据,返回值示例如下:
    {
        "data": {
            "list": [
                "领域词1",
                "领域词2",
                "领域词3",
                "领域词4"
            ],
            "modifyTime": "2023-01-03 10:58:33"
        }
    }
    
    • 如果索引名称中包含了“1”,那么他的词典就是index1词典
    • 如果索引名称中包含了“2”,那么他的词典就是index2词典
    • 启动一个定时器,延迟200秒执行 ,每200秒往index1和index2词典中添加数据。模拟字典数据更新
@CrossOrigin
@RestController
public class DicController {
   

    @GetMapping("/dict/{indexName}")
    public JSONObject stopDic(@PathVariable String indexName) {
   
        JSONObject object = new JSONObject();
        List<String> list = new ArrayList<>();
        if (indexName.contains("1")) {
   
            list.addAll(index1);
        } else {
   
            list.addAll(index2);
        }
        JSONObject data 

你可能感兴趣的:(Elasticsearch,elasticsearch,java,大数据)