惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园_首页
Last Week in AI
Last Week in AI
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
The Cloudflare Blog
罗磊的独立博客
月光博客
月光博客
N
Netflix TechBlog - Medium
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
Jina AI
Jina AI
J
Java Code Geeks

博客园 - hjswlqd

python pip 离线包安装 whl格式 tar gz格式 py-radius mysql 连接查询 左连接 右连接 笛卡尔积 等 python linux 调试 vscode timeline不显示|不正常|异常|no filtered timeline information was provided|Timeline does not work es scroll id 每次都相同 python 安装 echarts的渐变色配置 LinearGradient 联想 进入bios u盘启动 vscode python 3.7 pylance debugpy 插件 vsix vsix 离线 编译 转 | 一次搞懂数据大屏适配方案 (vw vh、rem、scale) 分辨率 缩放比 转 | element-ui组件table去除下方滚动条,实现鼠标左右拖拽移动表格 vscode 提示js 函数的插件 | vue3项目的插件 Window中查看端口被哪个进程占用,并结束进程的方法 nodejs 统计算指定后缀,格式的文件 python windows命令行 批处理 统计算指定后缀,格式的文件 保存 |下载 | 提取 win10 win11 电脑 锁屏壁纸 vscode process terminal 3221225506 终端打不开 默认打开powershell
kibana筛选数据
hjswlqd · 2024-10-16 · via 博客园 - hjswlqd

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 中有效地过滤和去重特定时间段内的用户名。