环境准备

1、elasticsearch
2、ik分词器
3、nginx

修改ik陪孩子文件IKAnalyzer.cfg.xml

http://127.0.0.1:8080/es/dic

新建java项目

@RestController
@RequestMapping(“/es”)
public class EsDicController {

@GetMapping("/dic")
public String queryDic(HttpServletResponse response){
    String dfg= "\"元気森林\",\"啤酒\"";
    String[] array = dfg.split(",");
    //获取数据库存储的词库
    System.out.println("请求了词库信息");
    StringBuffer stringBuffer = new StringBuffer();
    stringBuffer.append("柱子").append("\n");
    stringBuffer.append("中华人民共和国").append("\n");
    for (String s : array) {
        stringBuffer.append(s).append("\n");
    }
    // Last-Modified、Etag 值不变词库不会更新,ik每分钟会查一词词库信息
    response.setHeader("Last-Modified", 11+"");
    response.setHeader("Etag",String.valueOf(11));
    return stringBuffer.toString();
}

}
这是一个简单的demo,词库数据可以放到mysql中,词库数据查询mysql,可以随时改变词库数据,词库信息变化频率比较低,更新词库操作可以每天甚至几天更新一次就可以,或者加一个手动更新的接口,ik每分钟请求一次,不要每次都查数据库

nginx 配置

1、前面两部已经可以实现es的词库热更新,但是线上的的ip地址 变化的时候,ik配置文件的修改需要重启es,为了解决这个问题,我们用nginx做一个反向代理,当服务地址变更我们只需要更改nginx配置,使用/nginx -s reloa不停止服务重新加载nginx配置文件
2、配置信息
server {
listen 8000;
server_name localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;
	location  /es {
	   proxy_pass  http://127.0.0.1:8081/es/dic;
	}

}
3、nginx常用命令
启动:start nginx
不停服务加载配置文件:nginx -s reload
停止服务:nginx -s stop(快速停止nginx) 或 nginx -s quit(完整有序的停止nginx)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐