首页 > 其他分享 >kibana筛选数据

kibana筛选数据

时间:2024-10-16 10:34:14浏览次数:7  
标签:用户名 timestamp Kibana 查询 过滤 kibana 筛选 now 数据

q:

kibana如何编写语句,过滤es日志晚上9点到第二个早上8点的数据,并且筛选出用户名,是已经去重的用户名

 

a:

在 Kibana 中使用 Elasticsearch 查询语言(如 Painless 脚本或 Kibana 的 Kuery 查询语言)来过滤特定时间段的数据并去重用户名,可以通过以下步骤实现。假设你的索引模式为 `my-index-*`,时间戳字段为 `@timestamp`,用户名字段为 `username`。

### 使用 Kibana 的 Discover 功能

1. **打开 Kibana 并导航到 Discover 页面**:
- 选择你要查询的索引模式(例如 `my-index-*`)。

2. **设置时间范围**:
- 在顶部的时间选择器中,选择一个合适的时间范围,例如 "Last 7 days" 或 "Last 24 hours",以便包含你感兴趣的时段。

3. **添加过滤条件**:
- 在搜索栏中输入以下 Kuery 查询语句,以过滤出晚上9点到第二天早上8点的数据:
```kuery
@timestamp >= 'now-1d/d+21h' and @timestamp < 'now/d+8h'
```

4. **添加字段**:
- 在表格视图中,添加 `username` 字段,以便查看用户名。

5. **去重用户名**:
- Kibana 的 Discover 功能本身不支持直接去重,但你可以使用 Visualize 或 Lens 来创建一个聚合图表,以显示去重后的用户名。

### 使用 Kibana 的 Visualize 功能

1. **打开 Kibana 并导航到 Visualize 页面**:
- 选择 "Create visualization"。

2. **选择图表类型**:
- 选择 "Data table" 或 "Terms" 图表类型。

3. **配置数据源**:
- 选择你的索引模式(例如 `my-index-*`)。

4. **设置时间范围**:
- 在顶部的时间选择器中,选择一个合适的时间范围,例如 "Last 7 days" 或 "Last 24 hours",以便包含你感兴趣的时段。

5. **添加过滤条件**:
- 在 "Filters" 部分,添加以下过滤条件:
- **Field**: `@timestamp`
- **Operator**: `>=`
- **Value**: `now-1d/d+21h`
- **And**
- **Field**: `@timestamp`
- **Operator**: `<`
- **Value**: `now/d+8h`

6. **配置聚合**:
- 选择 "Terms" 聚合类型。
- 选择 `username` 字段。
- 设置 "Size" 为一个合适的值,以便显示足够的用户名。

7. **应用并保存**:
- 应用配置并保存可视化。

### 使用 Kibana 的 Dev Tools

如果你更喜欢使用原始的 Elasticsearch 查询,可以在 Kibana 的 Dev Tools 中编写和执行以下查询:

```json
GET my-index-*/_search
{
"size": 0,
"query": {
"bool": {
"should": [
{
"range": {
"@timestamp": {
"gte": "now-1d/d+21h",
"lt": "now/d+8h"
}
}
},
{
"range": {
"@timestamp": {
"gte": "now/d+21h",
"lt": "now+1d/d+8h"
}
}
}
]
}
},
"aggs": {
"unique_usernames": {
"terms": {
"field": "username.keyword",
"size": 1000 // 根据需要调整大小
}
}
}
}
```

这个查询做了以下几件事情:
1. **`query` 部分**:使用 `bool` 查询中的 `should` 子句来过滤出晚上9点到第二天早上8点的数据。
2. **`aggs` 部分**:使用 `terms` 聚合来获取去重后的用户名。

通过这些方法,你可以在 Kibana 中有效地过滤和去重特定时间段内的用户名。

标签:用户名,timestamp,Kibana,查询,过滤,kibana,筛选,now,数据
From: https://www.cnblogs.com/dhjy123/p/18469297

相关文章

  • Python 数据库备份脚本
    importdatetimeimportosimportsubprocess#数据库备份目录BACKUP_DIR='/path/to/backup'#备份文件保留周期(天)RETENTION_PERIOD=7#备份数据库defbackup_database():current_time=datetime.datetime.now()backup_file=f"backup_{current_time.strf......
  • 积木链无代码开发平台是怎么解决系统间的数据孤岛问题的?
    什么是数据孤岛?数据孤岛是指在企业或组织中,相互独立的信息系统或数据存储之间无法进行有效的数据共享和交互,从而形成一个个孤立的数据“岛屿”。企业数据孤岛的产生怎么形成的?首先,从技术层面来说,可能原因是不同系统采用不同的数据格式和存储方式,导致数据难以整合。例如,一......
  • mysql 数据存储路径迁移
    目录mysql数据存储路径迁移迁移事项mysql数据存储路径迁移*重要在开始之前,我们用mysqldump对所有数据库做下备份,防止数据损坏导致数据丢失迁移事项1.mysql配置文件备份#停止数据库systemctlstopmysqldcp/etc/my.cnf/etc/my.cnf.bak#然后修改数据存储路径为你要调......
  • 误删MySQL数据?别慌,Binlog来帮忙【转】
    数据丢失是每一个数据库管理员和开发者都不愿面对的噩梦。然而,意外总是难免,当不小心删除了重要的数据,如何才能迅速而有效地进行恢复呢?在数据库中有二进制日志(Binlog),它不仅记录了所有更改数据的事件,还可以帮助将数据库恢复到任何一个特定的时间点。本篇文章将带您深入了解如何利......
  • 软件测试笔记|数据库基础|创建索引的原则
    创建数据库索引有以下原则:一、选择合适的列创建索引1.选择经常用于查询条件的列:如果某一列经常在WHERE子句中作为条件出现,那么为该列创建索引可以大大提高查询速度。例如,在一个员工表中,如果经常根据员工的姓名进行查询,那么为“姓名”列创建索引是一个不错的选择。2.选择......
  • 保证Mysql数据库的安全性
    数据库安全性的重要性在一个企业中,为了维护企业声誉和客户信任,保护客户信息和公司数据就显得至关重要,再者,确保公司的系统正常运行,也要保证数据不被恶意篡改,还需要抵御外部攻击和内部威胁。防止数据泄露加密:使用SSL/TLS加密传输数据,启用数据加密功能保护存储的数据使用Op......
  • 全国企业持续绿色创新测算数据(1999-2023年)
    数据介绍:数据名称:企业持续绿色创新-测算数据数据范围:A股上市公司数据年份:1999-2023年样本数量:61119条数据说明:保留至少连续3年的数据非缺失企业数据来源:企业年报具体做法:参考何郁冰(2017)的做法,计算持续创新水平。将绿色专利申请的前后期对比来反映创新的持续程度。创新持续性=......
  • 【SSM框架探索】第二篇——SSM整合与表现层数据封装优化
    目录1SSM整合配置问题导入1.1SSM整合流程1.2.2Spring整合Mybatis1.2.3Spring整合SpringMVC2.1数据层开发(BookDao)2.2业务层开发(BookService/BookServiceImpl)2.3表现层开发(BookController)3.1Spring整合Junit测试业务层方法3.2postman测试表现层接口问......
  • 基于SpringBoot + mybatis + logback + shiro的仓库管理系统(完美运行、数据库源代码、
    文章目录前言一、系统功能模块二、开发环境三、部分功能模块展示3.1登录模块3.2后台首页3.3客户管理3.4供应商管理3.5商品管理3.6商品进货3.7商品退货查询3.8商品销售3.9销售退货查询3.10部门管理3.11菜单管理3.12权限管理3.13角色管理3.14用户管理3.15图......
  • IDEA连接数据库后,在使用表的时候有时候未检测到表
    我的这个产生的原因:之前做项目的时候检测到category表了,但后来数据库断开后,等再次连接上数据库,可以检测到数据库,但数据库中的表直接用,是检测不到的。解决方法一:使用数据库中表的时候,可以[数据库.数据库表],如下图所示,可以看到此时使用表就不爆红了。 解决方法二:......