1、从es ik插件源码看有个线程每分钟会去检测远程文件是否变化,按网上把远程词库文件部署到tomcat,每次都要重新加载,当文件数据量大的时候,每分钟加载一次,并不友好,可以通过模拟es的远程文件加载协议,增量更新词库,这样当词库变得很大的时候,可以节约词库加载时间
2、从ES ik源码可以看到,发送httphead请求的时候,会携带es插件之前保存的资源最新更新时间
last_modified(通过If-Modified-Since请求头携带),和最新的资源标识eTags(通过If-None-Match请求头携带),服务端接收到这两个参数后,和服务端状态进行比较,这里采用数据库中词典更新时间和last_modified进行比较,有比其大的记录则按es接收数据规则拼装这些记录的中的词,把最新记录的更新时间当作Last-Modified返回,ETag为Last-Modified对应的时间戳返回
3、Last-Modified和ETag其中一个不一样就加载远程词典,这里我们模拟协议如果词库有更新只返回增量数据,状态返回200,如果没有更新,把es插件传过来的值作为请求头返回状态304,如果是出现错误可以返回其他状态