go elasticsearch 测试实例


// 查询列表数据
func QueryOperateList(ctx context.Context, esClient *elastic.Client, index string, pageNum, pageSize int, start, end int64, execSql string, list []interface{}, operateAccount string, operateAddr string, maxRows, minRows int, dbAddr, namespace string, execResult string) (*message.OperateLogListResp, error) {boolQuery := elastic.NewBoolQuery().Must()if start > 0 && end > 0 && end > start {rangeQuery := elastic.NewRangeQuery("timestamp").Gt(start).Lt(end)boolQuery.Must(rangeQuery)}if len(execSql) > 0 {//execSqlMatchQuery := elastic.NewWildcardQuery("executeStatement", "*"+execSql+"*")//execSqlMatchQuery := elastic.NewFuzzyQuery("executeStatement", execSql).Fuzziness(2)execSqlMatchQuery := elastic.NewMatchQuery("executeStatement", execSql)fmt.Println(execSql)boolQuery.Must(execSqlMatchQuery)}if len(operateAddr) > 0 {operateAddrMatchQuery := elastic.NewMatchQuery("operateOriginAddr", operateAddr)boolQuery.Must(operateAddrMatchQuery)}if len(dbAddr) > 0 {dbAddrMatchQuery := elastic.NewMatchQuery("databaseAddr", dbAddr)boolQuery.Must(dbAddrMatchQuery)}if len(namespace) > 0 {//nameSpaceMatchQuery := elastic.NewMatchQuery("nameSpace", namespace)// 构建 wildcard 查询nameSpaceMatchQuery := elastic.NewWildcardQuery("nameSpace", "*"+namespace+"*")boolQuery.Must(nameSpaceMatchQuery)}if len(execResult) > 0 {execResultMatchQuery := elastic.NewMatchQuery("executeResult", execResult)boolQuery.Must(execResultMatchQuery)}if len(operateAccount) > 0 {operateAccountMatchQuery := elastic.NewWildcardQuery("operateAccount", "*"+operateAccount+"*")//operateAccountMatchQuery := elastic.NewFuzzyQuery("operateAccount", operateAccount)boolQuery.Must(operateAccountMatchQuery)}fmt.Println("max-min:", maxRows, minRows)//0->100:小于100  ;10->0:10到无穷大 0->0 忽略这个条件,max=0 代表无穷大if maxRows == 0 { // 情况1:min有值,max=0,最小值到无穷大    情况2:默认都不填min=0,max=0,0到无穷大;rowsQuery := elastic.NewRangeQuery("affectedRow").Gte(minRows)boolQuery.Must(rowsQuery)} else {rowsQuery := elastic.NewRangeQuery("affectedRow").Gte(minRows).Lte(maxRows)boolQuery.Must(rowsQuery)}fmt.Println("QueryOperateList list:", list)if len(list) > 0 {var newList []interface{}for _, v := range list {newList = append(newList, v)newList = append(newList, strings.ToUpper(v.(string)))}operateTypeMatchQuery := elastic.NewTermsQuery("operateType", newList...)boolQuery.Must(operateTypeMatchQuery)fmt.Println("QueryOperateList newList条件:", newList)}//================ 打印查询条件的 JSON 表示==========//queryJSON, err := boolQuery.Source()if err != nil {log.Fatalf("Error encoding query to JSON: %s", err)}formattedQuery, err := json.MarshalIndent(queryJSON, "", "  ")if err != nil {log.Fatalf("Error formatting JSON: %s", err)}fmt.Println("Elasticsearch Query:")fmt.Println(string(formattedQuery))//===============================================//// 执行ES请求需要提供一个上下文对象ctx2 := context.Background()// 创建Terms桶聚合//aggs := elastic.NewTermsAggregation().Field("operateTime").Size(1000) // 根据shop_id字段值,对数据进行分组searchResult, err := esClient.Search().Index(index).     // 设置索引名Query(boolQuery). // 设置查询条件//Aggregation("count", aggs). // 设置聚合条件,并为聚合条件设置一个名字From((pageNum-1)*pageSize).Size(pageSize).             // 设置分页参数 - 每页大小,设置为0代表不返回搜索结果,仅返回聚合分析结果Sort("operateTime", false). //设置排序字段,根据Created字段升序排序,第二个参数false表示逆序Pretty(true).               // 查询结果返回可读性较好的JSON格式Do(ctx2)                    // 执行请求if err != nil {return nil, err}//fmt.Println("分页:", (pageNum-1)*pageSize, pageSize)OperateListData := message.OperateLogListResp{Total: int(searchResult.TotalHits()),}OperateLogList := []*message.OperateLogInfo{}if searchResult.TotalHits() > 0 {for _, hit := range searchResult.Hits.Hits {var t OperateLogerr := json.Unmarshal(hit.Source, &t)if err != nil {fmt.Print(" 解析日志列表json数据失败\n", err.Error())}info := &message.OperateLogInfo{}info.ExecSql = t.ExecSqlinfo.OperateType = t.OperateTypeinfo.OperateAccount = t.OperateAccountinfo.OperateAddr = t.OperateAddrinfo.DbAddr = t.DbAddrinfo.Namespace = t.Namespaceinfo.Rows = t.Rows//info.Rows, _ = strconv.Atoi(t.Rows)info.ExecResult = t.ExecResultinfo.ExecTime = t.ExecTimeinfo.ResponseTime = t.ResponseTimeOperateLogList = append(OperateLogList, info)//打印每行数据//fmt.Printf("操作类型1: %s, 操作地址: %s ,数据库地址:%s,执行时间:%d\n", t.OperateType, t.OperateAddr, t.DbAddr, t.ExecTime)}} else {fmt.Print(" 没有数据 \n")}OperateListData.List = OperateLogListreturn &OperateListData, nil
}

打印出请求query:

GET infosec***t_new*/_search
{"query": {"bool": {"must": [{"range": {"timestamp": {"from": 1700964412000,"include_lower": false,"include_upper": false,"to": 1701223612000}}},{"match": {"executeStatement": {"query": "update ****-nk6x4'"}}},{"range": {"affectedRow": {"from": 0,"include_lower": true,"include_upper": true,"to": null}}}]}
}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【USRP】5G / 6G 原型系统 5g / 6G prototype system

面向5G/6G科研应用 USRP专门用于5G/6G产品的原型开发与验证。该系统可以在实验室搭建一个真实的5G 网络,基于开源的代码,专为科研用户设计。 软件无线电架构,构建真实5G移动通信系统 X410 采用了目前流行的异构式系统,融合了FP…

【毕业设计】基于雷达与深度学习的摔倒检测——微多普勒效应

运动物体的微多普勒效应为人体动作识别提供了可能,基于雷达的居家检测具有良好的隐私保护性,且不易受环境因素影响(如光照、温度等),近年来已受到国内外学者的广泛关注。由于雷达信号的非平稳特性,通过短时…

Oracle-CDB容器数据库修改service_names踩坑

前言: 最近在对一套Oracle容器数据库进行迁移测试时,为了保持新环境与旧环境的服务名一致,需要在新环境添加旧环境的服务名,在CDB的根容器通过service_name参数添加旧环境的服务名之后,发现数据库PDB的服务名全部被注销&#xff0…

自动驾驶学习笔记(十四)——感知算法

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 感知算法 开发过程 测试和评价 前言…

鸿蒙4.0开发笔记之ArkTS装饰器语法基础@Prop@Link@State状态装饰器(十二)

文章目录 一、哪些是状态装饰器二、StatePropLink状态传递的核心规则三、状态装饰器练习 一、哪些是状态装饰器 1、State:被装饰拥有其所属组件的状态,可以作为其子组件单向和双向同步的数据源。当其数值改变时,会引起相关组件的渲染刷新。 …

思维模型 赫洛克效应

本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。及时反馈,激发动力。 1 赫洛克效应的应用 1.1 赫洛克效应在管理中的应用 美国惠普公司是一家全球知名的科技公司,该公司非常注重员工的激励和认可。在惠普公司&…

网络和Linux网络_9(应用层和传输层_笔试选择题)

目录 一. 常见应用协议等等 1. 以下不是合法HTTP请求方法的是( ) 2. 文件传输使用的协议是() 3. HTTP1.1的请求方法不包括?() 4. http状态码中,( )表示访问成功,( )表示坏请求,( )表示服务不可用。() …

mysql的几种索引

mysql可以在表的一列、或者多列上创建索引,索引的类型可以选择,如下: 普通索引(KEY) 普通索引可以提高查询效率。在表的一列、或者多列上创建索引。 每个表可以创建多个普通索引。 例如,下面示例&#…

智能优化算法应用:基于海洋捕食者算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于海洋捕食者算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于海洋捕食者算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.海洋捕食者算法4.实验参数设定5.算法结果…

实现一个简单的网络通信下(udp)

时间过去好久了,先回忆一下上一篇博客的代码!! 目前来看,我们客户端发一条消息,我服务器收到这一条消息之后呢,服务器也知道了是谁给我发来的消息,紧接这就把这条消息放进buffer当中&#xff0c…

51单片机项目(18)——基于51单片机的大棚环境监测系统

1.功能描述 首先使用DS18B20,测量土壤温度,并显示在OLED屏幕左边。然后使用土壤湿度传感器测量土壤湿度,因为这个传感器输出的值是模拟量,所以需要使用AD转换模块。本次使用ADC0832,这是一个8位精度的AD转换模块&#…

大数据技术学习笔记(七)—— Zookeeper

目录 1 Zookeeper 概述1.1 Zookeeper 定义1.2 Zookeeper 工作机制1.3 Zookeeper 特点1.4 数据结构1.5 应用场景 2 Zookeeper 安装3 客户端命令行操作4 Zookeeper 的 Java 客户端操作4.1 IDEA 环境搭建4.2 初始化 ZooKeeper 客户端4.3 创建子节点4.4 获取子节点4.5 判断Znode是否…

深入理解 Kafka 集群搭建与管理

Apache Kafka 作为分布式流处理平台的核心,其集群搭建与管理是确保高可用性和高性能的关键。本文将深入研究 Kafka 集群的构建、配置、工作原理、节点角色以及一些高级管理策略,以助力读者更深层次地理解和灵活运用 Kafka 集群。 Kafka 集群基础 1 集群…

智能优化算法应用:基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.供需算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Flume 安装部署

文章目录 Flume 概述Flume 安装部署官方网址下载安装配置文件启动 Flume 进程启动报错输出文件乱码问题 Flume 概述 Flume(Apache Flume)是一个开源的分布式日志收集、聚合和传输系统,属于 Apache 软件基金会的项目之一。其主要目标是简化大…

预约系统源码解析:打造智能定制化预约服务的技术奇迹

在当今数字化时代,预约系统的重要性日益凸显,而预约系统源码的开放将为各行业带来更加灵活、智能的预约解决方案。本文将深入探讨预约系统源码的技术内幕,为开发者提供实用的代码示例,助力打造智能定制化的预约服务。 技术栈概览…

【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标☆

【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标 (1)前缀和后缀(2)前缀表(最长相同的前缀和后缀的长度)(3)匹配过程示意(4)next数组的…

Python----练习:使用面向对象实现报名系统开发

第一步:分析哪些动作是由哪些实体发出的 学生提出报名 学生提供相关资料 学生缴费 机构收费 教师分配教室 班级增加学生信息 于是,在整个过程中,一共有四个实体:学生、机构、教师、班级!在现实中的一个具体的实…

xxl-job(分布式调度任务)

简介 针对分布式任务调度的需求,市场上出现了很多的产品: 1)TBSchedule:淘宝推出的一款非常优秀的高性能分布式调度框架,目前被应用于阿里,京东,支付宝,国美等很多互联网企业的流程调度系统中。…

【深度学习】Adversarial Diffusion Distillation,SDXL-Turbo 一步出图

代码: https://huggingface.co/stabilityai/sdxl-turbo 使用 SDXL-Turbo 是SDXL 1.0的精炼版本,经过实时合成训练。SDXL-Turbo 基于一种称为对抗扩散蒸馏 (ADD) 的新颖训练方法(请参阅技术报告),该方法允许在高图像质…