Elasticsearch 聚合函数返回空数组|查询返回空内容 rs里有数据

2024-04-03 13:44

本文主要是介绍Elasticsearch 聚合函数返回空数组|查询返回空内容 rs里有数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题场景:

        今天用聚合函数想查询出catename不重复列表,类似于Mysql的group by函数。但返回的确是空数组[],再三确认是有数据的。输出response:

{"took":1,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":360,"relation":"eq"},"max_score":1.0,"hits":[{"_index":"goods","_type":"_doc","_id":"552","_score":1.0,"_source":{"cateName":"狗罐头","createTime":1673165093,"description":"","fullTextSearch":"PRINTPAW宠物狗零食鸡肉绕花生饼干成犬幼犬全犬种通用训犬奖励磨牙棒 【实惠装】鸡肉绕花生饼干360g狗罐头PRINTPAW官方旗舰店","id":552,"image":"//img10.360buyimg.com/n7/jfs/t1/228575/36/11044/79383/65976d82Fb5f1b102/48af91d69659fa57.jpg","price":36.9,"shopName":"PRINTPAW官方旗舰店","stock":1000,"title":"PRINTPAW宠物狗零食鸡肉绕花生饼干成犬幼犬全犬种通用训犬奖励磨牙棒 【实惠装】鸡肉绕花生饼干360g","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"584","_score":1.0,"_source":{"cateName":"狗罐头","createTime":1673165093,"description":"","fullTextSearch":"麦富迪 狗狗零食 成犬幼犬全犬种通用训犬奖励 蛋黄缠肉100g 混合口味 全阶段 国产狗罐头麦富迪官方旗舰店","id":584,"image":"//img11.360buyimg.com/n7/jfs/t1/227452/12/4395/157612/655efca3F444b9b85/06932f5d20c97662.jpg","price":15.0,"shopName":"麦富迪官方旗舰店","stock":1000,"title":"麦富迪 狗狗零食 成犬幼犬全犬种通用训犬奖励 蛋黄缠肉100g 混合口味 全阶段 国产","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"614","_score":1.0,"_source":{"cateName":"钓竿","createTime":1673165093,"description":"","fullTextSearch":"爱心东东 2022新款轻奢美人鱼鱼竿6h 美人鱼钓鱼竿轻硬19调6H碳素鲤鱼竿5.4 6.3 7.2米鱼台钓竿 超硬19调6H5.4米+礼包 新人首单满200多件多折!关注小店,更有粉丝价钓竿宽逸旗舰店","id":614,"image":"//img10.360buyimg.com/n7/jfs/t1/186750/35/19688/469778/61236599E7ca37659/d6efab66c7a0ad87.jpg","price":278.0,"shopName":"宽逸旗舰店","stock":1000,"title":"爱心东东 2022新款轻奢美人鱼鱼竿6h 美人鱼钓鱼竿轻硬19调6H碳素鲤鱼竿5.4 6.3 7.2米鱼台钓竿 超硬19调6H5.4米+礼包 新人首单满200多件多折!关注小店,更有粉丝价","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"604","_score":1.0,"_source":{"cateName":"钓竿","createTime":1673165093,"description":"","fullTextSearch":"特狼王鱼竿手竿4.5米5.4米6.3米7.2米钓鱼竿超轻超硬碳素台钓竿 4.5米杆稍+钩漂线 本产品为预售定制款,下单前请先联系客服咨询哦!钓竿汇斯盾彩泥店","id":604,"image":"//img10.360buyimg.com/n7/jfs/t1/139661/9/21538/211718/619f872bEed3fafb8/c5b4c0906e308c44.jpg","price":87.0,"shopName":"汇斯盾彩泥店","stock":1000,"title":"特狼王鱼竿手竿4.5米5.4米6.3米7.2米钓鱼竿超轻超硬碳素台钓竿 4.5米杆稍+钩漂线 本产品为预售定制款,下单前请先联系客服咨询哦!","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"340","_score":1.0,"_source":{"cateName":"汽车音箱","createTime":1673165093,"description":"","fullTextSearch":"6.5寸大柏林之声喇叭音箱空箱体汽车DIY水桶音响改装家用书架制作 如需定制钻孔/改孔请联系客服汽车音箱豪车拆车喇叭小店","id":340,"image":"//img11.360buyimg.com/n7/jfs/t1/229538/29/7287/214554/6575620aFe254e913/2af724e95d01ab53.jpg","price":198.0,"shopName":"豪车拆车喇叭小店","stock":1000,"title":"6.5寸大柏林之声喇叭音箱空箱体汽车DIY水桶音响改装家用书架制作 如需定制钻孔/改孔请联系客服","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"360","_score":1.0,"_source":{"cateName":"手机","createTime":1673165093,"description":"","fullTextSearch":"三星(SAMSUNG) Galaxy S24 Al智享生活办公 超视觉影像 第三代骁龙8 8GB+256GB 水墨黑 5G AI手机手机三星京东自营官方旗舰店","id":360,"image":"//img11.360buyimg.com/n7/jfs/t1/105669/35/48470/88509/65eadd08F50ab3480/c96b46bc41de9d0b.jpg","price":4999.0,"shopName":"三星京东自营官方旗舰店","stock":1000,"title":"三星(SAMSUNG) Galaxy S24 Al智享生活办公 超视觉影像 第三代骁龙8 8GB+256GB 水墨黑 5G AI手机","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"341","_score":1.0,"_source":{"cateName":"汽车音箱","createTime":1673165093,"description":"","fullTextSearch":"6.5寸大柏林之声喇叭音箱空箱体汽车DIY水桶音响改装家用书架制作 柏林分频器一只汽车音箱豪车拆车喇叭小店","id":341,"image":"//img14.360buyimg.com/n7/jfs/t1/229538/29/7287/214554/6575620aFe254e913/2af724e95d01ab53.jpg","price":70.0,"shopName":"豪车拆车喇叭小店","stock":1000,"title":"6.5寸大柏林之声喇叭音箱空箱体汽车DIY水桶音响改装家用书架制作 柏林分频器一只","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"597","_score":1.0,"_source":{"cateName":"狗罐头","createTime":1673165093,"description":"","fullTextSearch":"麦富迪(Myfoodie) 狗零食成幼犬通用营养拌饭狗湿粮包 羊奶肉包混合装70g*10袋 混合口味 全阶段 国产狗罐头麦富迪京东自营旗舰店","id":597,"image":"//img14.360buyimg.com/n7/jfs/t1/237833/8/13993/123403/65f57aa0F4f863c55/534fa4382e52005e.jpg","price":26.0,"shopName":"麦富迪京东自营旗舰店","stock":1000,"title":"麦富迪(Myfoodie) 狗零食成幼犬通用营养拌饭狗湿粮包 羊奶肉包混合装70g*10袋 混合口味 全阶段 国产","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"587","_score":1.0,"_source":{"cateName":"狗罐头","createTime":1673165093,"description":"","fullTextSearch":"麦富迪零食鸡胸肉干907g鸡肉干泰迪金毛幼犬磨牙补钙训练宠物狗狗零食 鸡肉味 全阶段 宠物狗罐头圣贝宠宠物生活专营店","id":587,"image":"//img10.360buyimg.com/n7/jfs/t1/175445/21/14350/367519/60c47a93E44b64e1e/3b02b0b509dc52f8.jpg","price":55.0,"shopName":"圣贝宠宠物生活专营店","stock":1000,"title":"麦富迪零食鸡胸肉干907g鸡肉干泰迪金毛幼犬磨牙补钙训练宠物狗狗零食 鸡肉味 全阶段 宠物","updateTime":1680094862,"views":0}},{"_index":"goods","_type":"_doc","_id":"598","_score":1.0,"_source":{"cateName":"狗罐头","createTime":1673165093,"description":"","fullTextSearch":"麦富迪 宠物狗狗零食 成犬幼犬训狗奖励鸡肉干400g 鸡肉味 全阶段 宠物狗罐头麦富迪京东自营旗舰店","id":598,"image":"//img11.360buyimg.com/n7/jfs/t1/181140/23/42682/127918/65f57aaeFac864a94/c2dbfdddc0a45d1a.jpg","price":35.0,"shopName":"麦富迪京东自营旗舰店","stock":1000,"title":"麦富迪 宠物狗狗零食 成犬幼犬训狗奖励鸡肉干400g 鸡肉味 全阶段 宠物","updateTime":1680094862,"views":0}}]},"aggregations":{"sterms#distinctCateName":{"doc_count_error_upper_bound":0,"sum_other_doc_count":0,"buckets":[]}}}

可以看到有数据,但是聚合函数为空。

附带上代码:

public List<HashMap<String, Object>> getCategoryList() {SearchRequest searchRequest = new SearchRequest(EsIndex.GOODS.getValue());// 创建一个搜索源构建器,用于构建搜索请求的主体部分SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();// ### 定义聚合条件,按cate_name字段分组// 聚合名称String termsName = "distinctCateName";TermsAggregationBuilder aggregation = AggregationBuilders.terms(termsName).field("cate_name.keyword");searchSourceBuilder.aggregation(aggregation);searchRequest.source(searchSourceBuilder);try {SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);ParsedStringTerms categories = response.getAggregations().get(termsName);ArrayList<HashMap<String, Object>> result = new ArrayList<>();System.out.println(categories.getBuckets());// // 遍历每个具体的分组及其包含的结果// for (Terms.Bucket bucket : categories.getBuckets()) {//     HashMap<String, Object> cateMap = new HashMap<>();//     cateMap.put("name", bucket.getKeyAsString());//     cateMap.put("value", bucket.getKeyAsString());//     result.add(cateMap);// }return result;} catch (CustomizeException exception) { // 自定义异常一般是对外暴露的异常错误throw new CustomizeException(exception.getCode(), exception.getMessage(), exception);} catch (Exception exception) { // 全局异常处理500不打算对外暴露的异常错误throw new CustomizeException(500, exception.getMessage(), exception);}}

解决:

        原因是:字段问题,由于我使用的实体类bean写入ES,字段名都是大写,但是实际ES中是小写,但是实际写入也不会报错。

        查看es字段列表:

GET goods
# 打印结果:
{"goods" : {"aliases" : { },"mappings" : {"properties" : {"cate_name" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword"}},"analyzer" : "ik_max_word"},"cate_name" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}},"create_time" : {"type" : "date"},"description" : {"type" : "keyword","index" : false},"full_text_search" : {"type" : "text","copy_to" : ["title","cate_name","shop_name"],"analyzer" : "ik_max_word"},"id" : {"type" : "keyword"},"image" : {"type" : "keyword","index" : false},"price" : {"type" : "scaled_float","scaling_factor" : 100.0},"shopName" : {"type" : "text","analyzer" : "ik_max_word"},"shop_name" : {"type" : "text","fields" : {"keyword" : {"type" : "keyword","ignore_above" : 256}}},"status" : {"type" : "short"},"stock" : {"type" : "integer"},"title" : {"type" : "text","analyzer" : "ik_max_word"},"update_time" : {"type" : "date"},"views" : {"type" : "integer"}}},"settings" : {"index" : {"routing" : {"allocation" : {"include" : {"_tier_preference" : "data_content"}}},"number_of_shards" : "1","provided_name" : "goods","creation_date" : "1712113365252","number_of_replicas" : "1","uuid" : "UyIaiESoTSyhWJO4CuhZnw","version" : {"created" : "7120199"}}}}
}

可以看到cate name是驼峰法,所以重建索引改为驼峰法即可。

# 删除索引
DELETE goodsPUT goods
{"properties": {"id": {"type": "keyword"},"cateName": {"type": "text","analyzer": "ik_max_word","fields": {"keyword": {"type": "keyword"}}},"title": {"type": "text","analyzer": "ik_max_word"},"image": {"type": "keyword","index": false},"description": {"type": "keyword","index": false},"price": {"type": "scaled_float","scaling_factor": 100},"stock": {"type": "integer"},"views": {"type": "integer"},"status": {"type": "short"},"createTime": {"type": "date"},"updateTime": {"type": "date"},"shopName": {"type": "text","analyzer": "ik_max_word"},"fullTextSearch": {"type": "text","analyzer": "ik_max_word","copy_to": ["title","cate_name","shop_name"]}}
}

这篇关于Elasticsearch 聚合函数返回空数组|查询返回空内容 rs里有数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/873073

相关文章

房产证 不动产查询

陕西政务服务网(便民服务)陕西政务服务网(手机版?更直观)不动产权证书|不动产登记证明(电子证照)商品房合同备案查询权利人查询

【操作系统】信号Signal超详解|捕捉函数

🔥博客主页: 我要成为C++领域大神🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 如何触发信号 信号是Linux下的经典技术,一般操作系统利用信号杀死违规进程,典型进程干预手段,信号除了杀死进程外也可以挂起进程 kill -l 查看系统支持的信号

【服务器运维】MySQL数据存储至数据盘

查看磁盘及分区 [root@MySQL tmp]# fdisk -lDisk /dev/sda: 21.5 GB, 21474836480 bytes255 heads, 63 sectors/track, 2610 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytesSector size (logical/physical)

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

SQL Server中,isnull()函数以及null的用法

SQL Serve中的isnull()函数:          isnull(value1,value2)         1、value1与value2的数据类型必须一致。         2、如果value1的值不为null,结果返回value1。         3、如果value1为null,结果返回vaule2的值。vaule2是你设定的值。        如

Steam邮件推送内容有哪些?配置教程详解!

Steam邮件推送功能是否安全?如何个性化邮件推送内容? Steam作为全球最大的数字游戏分发平台之一,不仅提供了海量的游戏资源,还通过邮件推送为用户提供最新的游戏信息、促销活动和个性化推荐。AokSend将详细介绍Steam邮件推送的主要内容。 Steam邮件推送:促销优惠 每当平台举办大型促销活动,如夏季促销、冬季促销、黑色星期五等,用户都会收到邮件通知。这些邮件详细列出了打折游戏、

tf.split()函数解析

API原型(TensorFlow 1.8.0): tf.split(     value,     num_or_size_splits,     axis=0,     num=None,     name='split' ) 这个函数是用来切割张量的。输入切割的张量和参数,返回切割的结果。  value传入的就是需要切割的张量。  这个函数有两种切割的方式: 以三个维度的张量为例,比如说一

数据时代的数字企业

1.写在前面 讨论数据治理在数字企业中的影响和必要性,并介绍数据治理的核心内容和实践方法。作者强调了数据质量、数据安全、数据隐私和数据合规等方面是数据治理的核心内容,并介绍了具体的实践措施和案例分析。企业需要重视这些方面以实现数字化转型和业务增长。 数字化转型行业小伙伴可以加入我的星球,初衷成为各位数字化转型参考库,星球内容每周更新 个人工作经验资料全部放在这里,包含数据治理、数据要