Elasticsearch仿京东、淘宝APP客户端的商品侧边栏筛选条件过滤和分页列表查询的实现案例

目录

需求分析

项目环境

API接口实现


需求分析

通过Elasticsearch完成商品列表查询和分类、品牌、规格参数的分组聚合统计查询

  1. 当用户输入关键字搜索后,查询出商品列表后点击右上角筛选按钮,能够展示该关键词下的全部商品分类(京东用的是二级分类,共3级分类)、品牌、和规格参数作为筛选条件。
  2. 商品分类支持单选、品牌支持多选、规格参数支持多选。
  3. 每当选中或取消选中筛选条件时,都能够实时更新筛选条件商品数量,并更新商品列表或点击确定更新。
  4. 注:这里需要注意的是,各个条件中的列表数据都会随着当前已选中的条件变化而变化,但当前操作的条件栏目(如:分类)中的数据是不变的(这里一般由前端控制),言外之意就是,这里的所有筛选条件都是从所有满足选中条件的商品中聚合出的数据,(例:当选中分类为【手机】时,需要重新调用获取查询条件的接口,这是接口返回的条件数据中分类类目中只有手机的分类,品牌类目里只有商品分类为手机的全部品牌,规格参数也同品牌一样,这样就实现了一个不断下钻聚合的过程)

 

项目环境

springboot + spring-boot-starter-data-elasticsearch(其中spring boot版本:2.1.6)

elasticsearch(版本:6.8.5)

这里环境搭建就不多赘述了,具体详看源代码


API接口实现

首先我们先实现商品列表的过滤分页查询接口

Spring Data Elasticsearch给我们提供了一系列的聚合查询方法

  1. 索引创建
    @Data
    @Document(indexName = "test", type = "product")
    //indexName索引名称 可以理解为数据库名 必须为小写 不然会报org.elasticsearch.indices.InvalidIndexNameException异常
    //type类型 可以理解为表名
    public class Product {
        /*
         * @Name: 商品Id
         * @Example: 1
         * @Description:
         */
        private Long id;
        /
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值