ik分词器的热词更新_ElasticSearch新增IK扩展词后,让历史数据生效方法

问题描述

IK是 ES 的中文分词插件。在IK新增热词后,不会去更新历史数据,即新添加的热词只对后续的数据生效。而实际上我们常常需要对历史数据进行更新。

解决办法

使用 ES 自己提供的 update_by_query 接口。

调用接口:http://127.0.0.1:9200/index其他支持的参数

refresh, wait_for_completion, wait_for_active_shards, and timeout.

查询 update_by_query:http://10.120.241.194:9200/_tasks?detailed=true&actions=*byquery

取消 upate_by_query 任务:http://10.120.241.194:9200/_tasks/BmK-50kZQCuFwvObmFrLrw:27388/_cancel。

BmK-50kZQCuFwvObmFrLrw:27388 是通过第二点查询出来。

update_by_query 原理

开始时获取一个索引的快照,并且使用内部版本来号来进行更新。这意味着如果文档在获得快照后,对索引处理 过程中版本发生更改,将会发生版本冲突。当快照的版本和索引版本一直时则进行更新,并且递增文档版本号。

当遇到冲突而导致整个更新过程失败时,更新过程是不会回滚的。如果不想因为冲突导致整个更新过程终止,可以在 url 中添加参数 conflicts=proceed。或者在请求 body 中添加”conflicts”:”proceed”

效率测试

更新测试环境所有索引(14 个),文档数量 123649,耗时 49616,效率 2490 个/s。观察服务器负载在 2 左右。

测试环境 es 为单个节点。

总体上对性能影响不大。

该接口返回有对应分词即表示添加成功。

作者:Chase888

来源:CSDN

原文:https://blog.csdn.net/a314773862/article/details/78515253

版权声明:本文为博主原创文章,转载请附上博文链接!

露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权

转载请注明原文链接:ElasticSearch新增IK扩展词后,让历史数据生效方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值