优化更新索引促销方式,以更新部分字段的方式更新。不在以刷新索引的方式更新。

This commit is contained in:
paulGao 2021-12-29 19:48:09 +08:00
parent 07f5fbca47
commit 5e1eb3e03b
2 changed files with 12 additions and 7 deletions

View File

@ -2,7 +2,6 @@ package cn.lili.listener;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ClassLoaderUtil;
import cn.hutool.json.JSONObject;
@ -141,7 +140,7 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
}
break;
case UPDATE_GOODS_INDEX_PROMOTIONS:
ThreadUtil.execAsync(() -> this.updateGoodsIndexPromotions(new String(messageExt.getBody())));
this.updateGoodsIndexPromotions(new String(messageExt.getBody()));
break;
case DELETE_GOODS_INDEX_PROMOTIONS:
BasePromotions promotions = JSONUtil.toBean(new String(messageExt.getBody()), BasePromotions.class);

View File

@ -619,7 +619,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements
/**
* 以更新部分字段的方式更新索引促销信息
*
* @param id 索引id
* @param id 索引id
* @param promotionMap 促销信息
*/
private void updatePromotionsByScript(String id, Map<String, Object> promotionMap) {
@ -628,10 +628,16 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements
String s = jsonObject.toString();
String promotionsStr = s.replace("{", "[").replace("}", "]");
UpdateByQueryRequest update = new UpdateByQueryRequest(getIndexName());
update.setQuery(QueryBuilders.boolQuery().filter(QueryBuilders.termsQuery("id", id)));
update.setScript(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";"));
client.updateByQueryAsync(update, RequestOptions.DEFAULT, this.actionListener());
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index(getIndexName());
updateRequest.id(id);
updateRequest.retryOnConflict(5);
updateRequest.script(new Script("ctx._source." + "promotionMap" + "=" + promotionsStr + ";"));
try {
client.update(updateRequest, RequestOptions.DEFAULT);
} catch (IOException e) {
log.error("更新商品索引促销信息错误", e);
}
}
/**