搜索服务
需求
实现整个系统的全站搜索
主要是实现商品相关搜索
分析
技术站:ElasticSearch Spring Data Elasticsearch
索引:
商品信息:micro:products
文档:
商品id 商品名称 商品的关键字 商品的类型
1.数据一致性的保证:
a.采用定时任务实现ES数据的维护
从Redis获取数据:
1个:新增的内容
1个:修改的内容
1个:删除的内容
批处理
b.MQ
后台系统上架商品、下架、修改的时候分别发送MQ消息到队列,消息监听器监听队列的消息变化,更新ES
二、代码实现
public class SystemConfig {
/*
ES用来存储商品信息的索引名称
*/
public static final String ES_PRODUCTS="micro:es:product";
}
package com.lxm.searchservice.model;
import com.lxm.common.config.SystemConfig;
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
/**
* @Author LXM
* @Date 2020/7/16 0016
*/
@Data
@Document(indexName = SystemConfig.ES_PRODUCTS)
public class ProductModel {
@Id //唯一标记
private Integer id;
@Field(index = true,name = "esname")//设置字段信息,比如分词规则
private String name;
private String type;
private String keywords;
}
package com.lxm.searchservice.service.impl;
import com.lxm.common.config.RedisKeyConfig;
import com.lxm.co

本文介绍了如何使用ElasticSearch实现全站搜索,重点在商品搜索。通过Spring Data Elasticsearch与ElasticSearch集成,建立'micro:products'索引。为了保证数据一致性,采取了两种策略:定时任务每2小时从Redis同步数据,包括新增、修改和删除的内容;后台系统操作如上架、下架、修改商品时,通过MQ发送消息到队列,由消息监听器监听并更新ES。
最低0.47元/天 解锁文章
1040

被折叠的 条评论
为什么被折叠?



