当前位置: 首页 > news >正文

ElasticSearch easy-es 聚合函数 group by 混合写法求Top N 词云 分词

1.将用户访问记录表数据同步到ES,并且分词,获取用户访问最多前十条词语。

Elasticsearch、Easy-es 快速入门 SearchAfterPage分页 若依前后端分离 Ruoyi-Vue SpringBoot

使用结巴分词器

        <!-- 分词器--><dependency><groupId>com.huaban</groupId><artifactId>jieba-analysis</artifactId><version>1.0.2</version></dependency>

初始化数据

public void createAndInitToES() {// 1.初始化-> 创建索引(相当于mysql中的表)esTzLyViewCountMapper.deleteIndex("tz_ly_view_count");esTzLyViewCountMapper.createIndex();esTzLyViewCountWordFrequencyMapper.deleteIndex("tz_ly_view_count_word");esTzLyViewCountWordFrequencyMapper.createIndex();MPJLambdaWrapper<TzLyViewCount> tzLyViewCountWrapper = JoinWrappers.lambda(TzLyViewCount.class).selectAll(TzLyViewCount.class).selectAs("lyUser", TzLyUser::getGender, TzLyViewCount::getGender).selectAs("lyUser", TzLyUser::getEthnicity, TzLyViewCount::getEthnicity).selectAs("lyUser", TzLyUser::getPoliticalStatus, TzLyViewCount::getPoliticalStatus).selectAs("lyUser", TzLyUser::getDomain, TzLyViewCount::getDomain).selectAs("lyUser", TzLyUser::getAreaCode, TzLyViewCount::getAreaCode).leftJoin(TzLyUser.class, "lyUser", on -> on.eq(TzLyViewCount::getViewUserId, TzLyUser::getId));//本地限制数据大小tzLyViewCountWrapper.between(TzLyViewCount::getCreatedDate, DateUtil.parse("2024-01-01 00:00:00"), DateUtil.parse("2024-02-01 00:00:00"));int currentPage = 1;int pageSize = 1000;while (true) {PageUtils.startPage(currentPage, pageSize);List<TzLyViewCount> list = tzLyViewCountMapper.selectList(tzLyViewCountWrapper);// 如果当前页没有数据,说明查询结束if (CollectionUtil.isEmpty(list)) {break;}EsTzLyViewCount esTzLyViewCount = null;List<EsTzLyViewCount> esTzLyViewCountList = new ArrayList<>(list.size() * 2);for (TzLyViewCount viewCount : list) {esTzLyViewCount = new EsTzLyViewCount();BeanUtils.copyBeanProp(esTzLyViewCount, viewCount);esTzLyViewCountList.add(esTzLyViewCount);}splitWordAndInsertEs(esTzLyViewCountList);// 准备查询下一页currentPage++;}}public void splitWordAndInsertEs(List<EsTzLyViewCount> esTzLyViewCountList) {JiebaSegmenter js = new JiebaSegmenter();EsTzLyViewCountWord esTzLyViewCountWord = null;List<EsTzLyViewCountWord> esTzLyViewCountWordList = new ArrayList<>();for (EsTzLyViewCount esTzLyViewCount : esTzLyViewCountList) {if (StringUtils.isNotBlank(esTzLyViewCount.getViewTitle())) {List<String> wordList = js.sentenceProcess(esTzLyViewCount.getViewTitle());for (String word : wordList) {if (word.length() >= 2) {esTzLyViewCountWord = new EsTzLyViewCountWord();BeanUtils.copyBeanProp(esTzLyViewCountWord, esTzLyViewCount);esTzLyViewCountWord.setViewTitleWord(word);esTzLyViewCountWordList.add(esTzLyViewCountWord);}}}}esTzLyViewCountWordFrequencyMapper.insertBatch(esTzLyViewCountWordList);esTzLyViewCountMapper.insertBatch(esTzLyViewCountList);}
easy-es 聚合函数 混合写法
 /*** 访问信息关键词*/public List<HashMap<String, Long>> accessInformationKeyword(StatisticsDateQueryVo statisticsDateQueryVo) {LambdaEsQueryWrapper<EsTzLyViewCountWord> wrapper = new LambdaEsQueryWrapper<>();//不返回任何文档wrapper.size(0);//限制文档聚合范围if (ObjectUtils.isNotEmpty(statisticsDateQueryVo.getBgnTimestamp()) && StringUtils.isNotNull(statisticsDateQueryVo.getEndTimestamp())) {Date bgnTimestamp = new Date(statisticsDateQueryVo.getBgnTimestamp().getTime());Date endTimestamp = new Date(statisticsDateQueryVo.getEndTimestamp().getTime());wrapper.between(EsTzLyViewCountWord::getCreatedDate, bgnTimestamp, endTimestamp);} else {// 获取当前年份(假设 statisticsDateQueryVo.getQueryTimestamp() 返回的是Date类型)Date queryDate = statisticsDateQueryVo.getQueryTimestamp();Calendar calendar = Calendar.getInstance();calendar.setTime(queryDate);int currentYear = calendar.get(Calendar.YEAR);// 获取当前年份的第一天(使用Calendar来设置日期部分)calendar.set(Calendar.YEAR, currentYear);calendar.set(Calendar.MONTH, Calendar.JANUARY);calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);Date firstDayOfYear = calendar.getTime();// 获取当前年份的最后一天(使用Calendar来设置日期部分)calendar.set(Calendar.YEAR, currentYear);calendar.set(Calendar.MONTH, Calendar.DECEMBER);calendar.set(Calendar.DAY_OF_MONTH, 31);calendar.set(Calendar.HOUR_OF_DAY, 23);calendar.set(Calendar.MINUTE, 59);calendar.set(Calendar.SECOND, 59);calendar.set(Calendar.MILLISECOND, 999);Date lastDayOfYear = calendar.getTime();// 设置查询条件(这里的wrapper类似前面示例中的查询条件包装类,需根据实际调整)wrapper.between(EsTzLyViewCountWord::getCreatedDate, firstDayOfYear, lastDayOfYear);}AggregationBuilder aggregation = AggregationBuilders.terms("viewTitleWordAgg")// 自定义聚合名.field("viewTitleWord") //聚合字段
//                .order() 排序,默认降序.size(10); //要十条记录SearchSourceBuilder searchSourceBuilder = esTzLyViewCountWordFrequencyMapper.getSearchSourceBuilder(wrapper);searchSourceBuilder.aggregation(aggregation);wrapper.setSearchSourceBuilder(searchSourceBuilder);SearchResponse searchResponse = esTzLyViewCountWordFrequencyMapper.search(wrapper);List<HashMap<String, Long>> list = new ArrayList<>();Aggregation viewTitleWordAgg = searchResponse.getAggregations().getAsMap().get("viewTitleWordAgg");for (int i = 0; i < ((Terms) viewTitleWordAgg).getBuckets().size(); i++) {Terms.Bucket bucket = ((Terms) viewTitleWordAgg).getBuckets().get(i);HashMap<String, Long> hashMap = new HashMap<>();hashMap.put(bucket.getKeyAsString(), bucket.getDocCount());list.add(hashMap);}return list;}

相关文章:

ElasticSearch easy-es 聚合函数 group by 混合写法求Top N 词云 分词

1.将用户访问记录表数据同步到ES&#xff0c;并且分词&#xff0c;获取用户访问最多前十条词语。 Elasticsearch、Easy-es 快速入门 SearchAfterPage分页 若依前后端分离 Ruoyi-Vue SpringBoot 使用结巴分词器 <!-- 分词器--><dependency><groupId>com.hua…...

在 ASP.NET C# Web API 中实现 Serilog 以增强请求和响应的日志记录

介绍 日志记录是任何 Web 应用程序的关键方面。它有助于调试、性能监控和了解用户交互。在 ASP.NET C# 中&#xff0c;集成 Serilog 作为记录请求和响应&#xff08;包括传入和传出的数据&#xff09;的中间件可以显著提高 Web API 的可观察性和故障排除能力。 在过去的几周里&…...

2024年顶级小型语言模型前15名

本文&#xff0c;我们将深入了解2024年备受瞩目的十五款小型语言模型&#xff08;SLMs&#xff09;&#xff0c;它们分别是Llama 3.1 8B、Gemma2、Qwen 2、Mistral Nemo、Phi-3.5等。这些SLMs以其精巧的体积和高效率著称&#xff0c;它们不需要依赖庞大的服务器资源&#xff0c…...

精通 Python 网络安全(一)

前言 最近&#xff0c;Python 开始受到越来越多的关注&#xff0c;最新的 Python 更新添加了许多可用于执行关键任务的包。我们的主要目标是帮助您利用 Python 包来检测和利用漏洞&#xff0c;并解决网络挑战。 本书将首先带您了解与网络和安全相关的 Python 脚本和库。然后&…...

【python自动化二】pytest集成allure生成测试报告

pytest本身不会直接生成测试报告&#xff0c;而allure是一种生成测试报告的公共插件&#xff0c;可与多种测试框架配合生成测试报告&#xff0c;本文介绍下如何集成allure生成测试报告。 1.allure安装 1.安装allure-pytest 先安装allure的pytest插件&#xff0c;用于在pytes…...

网络版本的通讯录青春版(protobuf)

环境搭建 Protobuf 还常⽤于通讯协议、服务端数据交换场景。 因为我们主要目的只是为了学习protobuf&#xff0c;因此对于客户端&#xff0c;原本应该具备&#xff1a; 新增⼀个联系⼈ ◦ 删除⼀个联系⼈ ◦ 查询通讯录列表 ◦ 查询⼀个联系⼈的详细信息 这样四个功能。 …...

开源模型应用落地-安全合规篇-用户输入价值观判断(三)

一、前言 在深度合规功能中,对用户输入内容的价值观判断具有重要意义。这一功能不仅仅是对信息合法性和合规性的简单审核,更是对信息背后隐含的伦理道德和社会责任的深刻洞察。通过对价值观的判断,系统能够识别可能引发不当影响或冲突的内容,从而为用户提供更安全、更和谐的…...

神经网络入门实战:(十四)pytorch 官网内置的 CIFAR10 数据集,及其网络模型

(一) pytorch 官网内置的网络模型 图像处理&#xff1a; Models and pre-trained weights — Torchvision 0.20 documentation (二) CIFAR10数据集的分类网络模型&#xff08;仅前向传播&#xff09;&#xff1a; 下方的网络模型图片有误&#xff0c;已做修改&#xff0c;具…...

【Rust在WASM中实现pdf文件的生成】

Rust在WASM中实现pdf文件的生成 前言概念和依赖问题描述分步实现pdf转Blob生成URL两种方式利用localstorage传递参数处理图片Vec<u8>到pdf格式的Vec<u8>使用rust创建iframe显示pdf的Blob最后 前言 实现了一个通用的前端jpg转pdf的wasm,因为动态响应框架无法直接打…...

在MySQL中执行sum case when报错:SUM does not exist

1. 报错 在pgsql中能正常运行的一段SQL在MySQL中运行的时候报错了&#xff1a; SELECT DATE( hr.handle_time ) AS statsDate,SUM ( CASE WHEN hma.app_type IN ( 2, 5 ) THEN ch_money ELSE 0 END ) AS aliPayAmt,SUM ( CASE WHEN hma.app_type IN ( 1, 4 ) THEN ch_money EL…...

【openssl】相关指令

熟悉下相关概念 x509&#xff1a;证书标准pem和der&#xff1a;两种&#xff08;包括公私钥、证书签名请求、证书等内容的&#xff09;的格式&#xff0c;前者是文本形式&#xff0c;linux常用&#xff0c;后者是二进制形式&#xff0c;windows常用&#xff0c;仅仅是格式&…...

实例分割详解

实例分割详解 引言 实例分割是计算机视觉领域的一项复杂任务&#xff0c;它要求模型能够识别图像中不同类别的对象&#xff0c;并对每个单独的对象进行像素级别的分类。与语义分割不同的是&#xff0c;实例分割不仅要区分不同的类别&#xff0c;还要识别同一类别中的不同个体…...

D87【python 接口自动化学习】- pytest基础用法

day87 pytest运行参数 -m -k 学习日期&#xff1a;20241203 学习目标&#xff1a;pytest基础用法 -- pytest运行参数-m -k 学习笔记&#xff1a; 常用运行参数 pytest运行参数-m -k pytest -m 执行特定的测试用例&#xff0c;markers最好使用英文 [pytest] testpaths./te…...

浅谈MySQL路由

华子目录 mysql-router介绍下载mysql-router安装mysql-router实验 mysql-router介绍 mysql-router是一个对应用程序透明的InnoDB Cluster连接路由服务&#xff0c;提供负载均衡、应用连接故障转移和客户端路由利用路由器的连接路由特性&#xff0c;用户可以编写应用程序来连接到…...

matlab中disp,fprintf,sprintf,display,dlmwrite输出函数之间的区别

下面是他们之间的区别&#xff1a; disp函数与fprintf函数的区别 输出格式的灵活性 disp函数&#xff1a;输出格式相对固定。它会自动将变量以一种比较直接的方式显示出来。对于数组&#xff0c;会按照行列形式展示&#xff1b;对于字符串&#xff0c;直接原样输出并换行。例如…...

30.100ASK_T113-PRO 用QT编写视频播放器(一)

1.再buildroot中添加视频解码库 X264, 执行 make menuconfig Target packages -->Libraries --> Multimedia --> X264 CLI 还需要添加 FFmpeg 2. 保存,重新编译 make all 3.将镜像下载开发板...

Linux-GPIO应用编程

本章介绍应用层如何控制 GPIO&#xff0c;譬如控制 GPIO 输出高电平、或输出低电平。 只要是用到GPIO的外设&#xff0c;都有可能用得到这些操作方法。 照理说&#xff0c;GPIO的操作应该是由驱动层去做的&#xff0c;使用寄存器操作或者GPIO子系统之类的框架。 但是&#xff0…...

opencvocr识别手机摄像头拍摄的指定区域文字,文字符合规则就语音报警

安装python&#xff0c;pycharm&#xff0c;自行安装。 Python下安装OpenCv 2.1 打开cmd,先安装opencv-python pip install opencv-python --user -i https://pypi.tuna.tsinghua.edu.cn/simple2.2 再安装opencv-contrib-python pip install opencv-contrib-python --user …...

微服务即时通讯系统(5)用户管理子服务,网关子服务

用户管理子服务&#xff08;user文件&#xff09; 用户管理子服务也是这个项目中的一个业务最多的子服务&#xff0c;接口多&#xff0c;但是主要涉及的数据表只有user表&#xff0c;Redis的键值对和ES的一个搜索引擎&#xff0c;主要功能是对用户的个人信息进行修改管理&#…...

postgreSQL安装后启动有The application server could not be contacted问题

不得不说pgsql是真的麻烦,找问题找了几个小时才解决.直接步入主题吧 首先问题如下 安装后,双击启动就出现上述问题 首先删除路径为 c:\Users\your_name\AppData\Roaming\pgAdmin 之内的所有文件和文件夹, 如果找不到AppData,就把这个点开 接着找到你安装pgsql的路径,我的是D…...

CCoE专家协作框架:垂直领域AI落地的工程化范式

1. 项目概述&#xff1a;当通用大模型遇上专业深水区&#xff0c;CCoE不是“打补丁”&#xff0c;而是重构知识协作方式你有没有试过让一个刚读完《五年高考三年模拟》的学霸&#xff0c;立刻去给三甲医院心内科会诊&#xff1f;或者让一位通晓全球法律体系的法学教授&#xff…...

工业眼睛:11 老手血泪Tips + 新手避坑清单

11 老手血泪Tips + 新手避坑清单 上回聊完机器视觉给工厂安了“眼睛”,AI让它升级成“火眼金睛”,数据闭环一接,生产线直接会自己挑毛病。今天不整高大上的理论,来点真刀真枪的干货——11条老手血泪Tips(全是师傅们用命换来的教训,踩坑踩到哭),外加新手避坑清单(直接…...

蘑菇博客性能优化技巧:10个提升博客访问速度的方法 [特殊字符]

蘑菇博客性能优化技巧&#xff1a;10个提升博客访问速度的方法 &#x1f680; 【免费下载链接】mogu_blog_v2 蘑菇博客(MoguBlog)&#xff0c;一个基于微服务架构的前后端分离博客系统。Web端使用Vue Element , 移动端使用uniapp和ColorUI。后端使用Spring cloud Spring boot…...

硬件工程师,每天5分钟(5)——为什么 DDR5 最怕地不好?回流路径,才是高速设计真正的灵魂

讲透&#xff1a; 回流路径 为什么 Split Plane 最危险 为什么加地孔有时候能救命 为什么 GPS 会被 DDR 干扰 为什么 EMC 挂的根因常是地 &#x1f697;《硬件工程师&#xff0c;每天5分钟》第5篇 &#x1f525;《为什么 DDR5 最怕地不好&#xff1f;回流路径&#xff0c;才是高…...

干翻特斯拉?雷军说输给特斯拉不丢人

一周前的晚上&#xff0c;雷军和马斯克合照上了热搜。一周后的晚上&#xff0c;“雷军说输给特斯拉不丢人”又上了热搜。①5 月 21 日晚间小米有个发布会&#xff0c;雷军期间自问&#xff1a;“Model Y 是全球纯电车型的销冠&#xff0c;每年都有很多车型站出来要挑战 Model Y…...

美国签证预约机器人:3分钟掌握24小时智能抢号终极方案

美国签证预约机器人&#xff1a;3分钟掌握24小时智能抢号终极方案 【免费下载链接】us-visa-bot US Visa Bot 项目地址: https://gitcode.com/gh_mirrors/us/us-visa-bot 还在为美国签证面试预约的漫长等待而烦恼吗&#xff1f;面对有限的面试名额和激烈的竞争环境&…...

Orbit存储系统完全指南:SQLite、IndexedDB与Firestore三大方案深度解析

Orbit存储系统完全指南&#xff1a;SQLite、IndexedDB与Firestore三大方案深度解析 【免费下载链接】orbit Experimental spaced repetition platform for exploring ideas in memory augmentation and programmable attention 项目地址: https://gitcode.com/gh_mirrors/orb…...

为OpenClaw智能体工作流配置Taotoken作为稳定的模型供应后端

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为OpenClaw智能体工作流配置Taotoken作为稳定的模型供应后端 在构建基于OpenClaw的复杂自动化工作流时&#xff0c;一个稳定且模型…...

具身智能:软件测试从业者的新赛道

当软件测试的触角还在数字世界里深耕代码逻辑、验证功能完整性时&#xff0c;具身智能正以“AI实体”的姿态&#xff0c;打破虚拟与现实的边界&#xff0c;为测试行业开辟出一片全新的疆域。作为软件测试从业者&#xff0c;理解具身智能的技术内核、发展现状与未来趋势&#xf…...

【Spring】 AOP 核心原理,与声明式事务传播机制

一、什么是 AOPAOP&#xff08;Aspect Oriented Programming&#xff0c;面向切面编程&#xff09;核心思想在不修改原有业务代码的情况下&#xff0c;对方法进行统一增强。例如&#xff1a;日志记录&#xff1b;权限校验&#xff1b;事务管理&#xff1b;性能统计&#xff1b;…...