UnmappedTerms cannot be cast to org.elasticsearch.search.aggregations.bucket.terms.StringTerms

问题

在完成黑马的leyou商城中,在13天的视频中对规格参数进行聚合查询并封装数据时,后台出现这个错误信息

java.lang.ClassCastException: org.elasticsearch.search.aggregations.bucket.terms.UnmappedTerms cannot be cast to org.elasticsearch.search.aggregations.bucket.terms.StringTerms

看到这个cast to就知道格式不能转换成StringTerms,并且错误代码在getParamAggResult方法中,如图:

在这里插入图片描述

问题原因

至于问题原因出在哪,我是参考的这篇文章:

https://blog.csdn.net/u010553867/article/details/104452764

问题解决

当然这个博主已经给出了解决方法,但是可能小人不才,没怎么读懂:/(ㄒoㄒ)/~~

然后根据博主提供的信息,最后还是解决了,所以把我的操作步骤写一下。

步骤1:删除elasticsearch中的goods引索

开启kibana Server在网页端一般都是http://localhost:5601/,然后执行DELETE /goods

步骤2:修改SearchService中代码

找到buildGoods方法,进行如下修改

在这里插入图片描述

步骤3:在elasticsearch中添加goods引索,和导入数据

源代码课程中有,还是贴在这吧

public void test(){
        elasticsearchTemplate.createIndex(Goods.class);
        elasticsearchTemplate.putMapping(Goods.class);

        Integer page = 1;
        Integer rows = 100;
        do {
            PageResult<SpuBo> result = goodsClient.querySpuByPage(null, null, page, rows);
            List<SpuBo> items = result.getItems();
            List<Goods> goods = items.stream().map(spuBo -> {
                try {
                    return searchService.buildGoods(spuBo);
                } catch (JsonProcessingException e) {
                    e.printStackTrace();
                }
                return null;
            }).collect(Collectors.toList());

            goodsReponsitory.saveAll(goods);

            rows = items.size();
            page++;
        }while (rows == 100);

    }

然后执行就没问题了!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值