es词库热更新

环境准备

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值