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.rhkb.cn/news/212071.html

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

相关文章

在re:Invent大会上,上汽海外出行选择亚马逊云科技为其提供智能网联解决方案

亚马逊云科技在re:Invent 2023上宣布,中国最大的汽车制造商之一、《财富》世界500强企业上汽集团旗下的上汽海外出行科技有限公司(以下简称“上汽海外出行”)已选择亚马逊云科技为重要云服务供应商,为出海的自主品牌汽车构建领先的…

解决webpack打包生成gz格式css/js文件没法在nginx使用的问题--全网唯一正确

本文绝对是全网解决这个问题唯一正确的文章,没有之一! 很多人都说开启nginx gzip压缩,这些人完全是胡说八道!你们到底懂不懂叫gzip压缩啊?! 不信你就试试,如果css/js只有gz文件,ng…

Linux 系统渗透提权-Server2204-(解析)

B-3:Linux 系统渗透提权 任务环境说明: 服务器场景:Server2204(关闭链接) 用户名:hacker 密码:123456 1.使用渗透机对服务器信息收集,并将服务器中 SSH 服务端口号作为 flag 提 交; Flag:2283/tcp

Angular 由一个bug说起之三:为什么时不时出现额外的水平/垂直滚动条?怎样能更好的防止它的出现?

目录: 什么是单元溢出 控制滚动条出现的属性 怎样能减少意外的滚动条出现 一、什么是单元溢出 在说到这个问题之前我们先简单阐述一下视图窗口(Viewport)和视图内容(View Content) 视图窗口简单来说就是呈现内容的视口,浏览器就是一个窗口&#xff…

论ChatGPT让程序员提升效率—掌握时代工具风口修炼之道【文末送书-02】

文章目录 一.论ChatGPT让程序员提升效率—掌握时代工具风口修炼之道二.ChatGPT在代码编写中的应用2.1 快速解决问题:2.2 优化代码结构:2.3 ChatGPT的学习过程2.4 ChatGPT的自定义训练 三.文末推荐与福利免费包邮送出4本!3.2领书方式 一.论Cha…

RflySim | 姿态控制器设计实验二

本实验的目的是让多旋翼的姿态能够跟随我们给定的期望姿态,姿态控制器的好坏直接决定了多旋翼能否平稳飞行。 RflySim| 姿态控制器设计实验二 01 基础实验 1.复现四旋翼飞行器的Simulink仿真,分析控制分配器的作用; 2.记录姿态的阶跃响应&a…

GWAS power的计算

import math import numpy as np import pandas as pd from matplotlib import pyplot as plt from scipy.special import chdtri from collections import defaultdict %matplotlib inline对于GWAS中power值(statistical power)的计算,用自己…

unity 2d 入门 飞翔小鸟 下坠功能且碰到地面要停止 刚体 胶囊碰撞器 (四)

1、实现对象要受重力 在对应的图层添加刚体 改成持续 2、设置胶囊碰撞器并设置水平方向 3、地面添加盒状碰撞器 运行则能看到小鸟下坠并落到地面上

二叉树题目:翻转二叉树以匹配前序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:翻转二叉树以匹配前序遍历 出处:971. 翻转二叉树以匹配前序遍历 难度 5 级 题目描述 要求 给定一个二叉树的根结点 root \texttt{roo…

Redis--13--缓存一致性问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 缓存一致性问题1、先更新缓存,再更新DB方案二:先更新DB,再更新缓存方案三:先删缓存,再写数据库推荐1&…

【c】杨辉三角

下面介绍两种方法 1.利用上面性质的第五条&#xff0c;我们可以求各行各列的组合数 2.利用上面性质的第7条&#xff0c;我们可以用数组完成 下面附上代码 1. #include<stdio.h> void fact(int n ,int m )//求组合数 {long long int sum11;long long int sum21;int a…

C#中GDI+图形图像技术(Graphics类、Pen类、Brush类)

目录 一、创建Graphics对象 1.创建Pen对象 2.创建Brush对象 &#xff08;1&#xff09;SolidBrush类 &#xff08;2&#xff09;HatchBrush类 ​​​​​​​&#xff08;3&#xff09;LinerGradientBrush类 用户界面上的窗体和控件非常有用&#xff0c;且引人注目&#…

家政小程序源码,师傅竞价接单

家政预约上门服务小程序开发方案&#xff0c;php开发语言&#xff0c;前端是uniapp&#xff0c;有成品源码&#xff0c;可以二开&#xff0c;可以定制。 一家政小程序用户端功能&#xff1a;服务分类、在线预约、在线下单。 师傅端&#xff1a;在线接单&#xff0c;竞价&…

zabbix分布式监控平台从IPV4切换到IPV6之监控主机切换

现在有一套监控了海量服务器的zabbix分布式监控平台需整体在线从IPV4切换到IPV6&#xff0c;不能影响其原有的定制监控及视图。本文讲解了切换的第一步--监控主机切换。 一、zabbix分布式监控平台平台架构 本套zabbix分布式监控平台是一个多代理服务器分布式部署的典型传统架构…

rocketMQ介绍

作用 流量削峰系统解耦 功能 普通消息 同步消息异步消息事务消息顺序消息延迟消息订阅与发布消息过滤消息消费重试死信队列...... 架构设计 1个broker是1台实例每个broker都有从节点&#xff0c;便于做故障转移每个broker对应一个文件&#xff0c;存储数据&#xff1f;还是…

基于单片机设计的自动门控制系统

一、前言 自动门控制系统是一种智能化的应用&#xff0c;能够根据人体接近信号自动完成门的打开和关闭操作。在传统的门控系统中&#xff0c;通常需要人手动进行门的开启和关闭&#xff0c;不仅费时费力&#xff0c;还不够智能高效。 本项目采用了STC89C52作为主控芯片&#…

【高数:1 映射与函数】

【高数&#xff1a;1 映射与函数】 例2.1 绝对值函数例2.2 符号函数例2.3 反函数表示例2.4 双曲正弦sinh&#xff0c;双曲余弦cosh&#xff0c;双曲正切tanh 参考书籍&#xff1a;毕文斌, 毛悦悦. Python漫游数学王国[M]. 北京&#xff1a;清华大学出版社&#xff0c;2022. 例2…

1.1美术理论基础

一、光影 物体呈现在人们眼前的时候&#xff0c;不同的受光面其明暗变化以及物体的影子。 1.什么是黑白灰 在美术中黑白灰指亮面、灰面、暗面&#xff0c;属于素描的三大面&#xff0c;主要体验一个物体的整体寿光过程。普遍存在于各种艺术和设计领域。黑白灰作品的出现&#x…

一文搞懂系列——你真的了解如何生成动态库了吗?

引言 动态库的编译&#xff0c;这有什么难度&#xff0c;这不是手到擒来的事情吗&#xff1f;无非不就是&#xff1a; gcc -FPIC -shared -o libxxx.so *.o *.c 我若是提出这些需求场景&#xff0c;阁下又如何应对呢&#xff1f; 动态库A依赖其他部分提供的能力。但是却不…

LinkedList详解

LinkedList详解 LinkedList是List接口的一个主要的实现类之一&#xff0c;基于链表的实现。以java8为例来了解一下LinkedList的源码实现 继承关系 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>,…