elasticsearch - 根据 Logstash 中的字段插入不同的索引
问题描述
我目前正在使用 Elasticsearch、Logstash 和 Filebeat 7.12 版。我正在使用 Filebeat 读取日志文件,然后将其传递给 Logstash,然后 Logstash 将过滤并插入 Elasticsearch。
我的问题是基于 Logstash 中的过滤器,如何插入 Elasticsearch 中的不同索引?
下面是我的logstash配置:
input {
beats {
port => 5044
}
}
filter {
grok {
match =>
[
"message", "(?m)timestamp=%{GREEDYDATA:timestamp} applicationname=%{GREEDYDATA:application_name} %{DATA:type},\"%{DATA:sql_statement}?\",(.*?)",
"message", "(?m)timestamp=%{GREEDYDATA:timestamp} applicationname=%{GREEDYDATA:application_name} %{DATA:type},\"%{DATA:sql_statement}?\",(.*?),\"%{DATA:username}?\""
]
}
}
output {
if "DDL" in [type] {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "postgresaudit_ddl"
}
}else{
elasticsearch {
hosts => ["http://localhost:9200"]
index => "postgresaudit"
}
}
}
我试图做“如果 [type] 中的“DDL””,它只是进入 postgresaudit 索引。如何根据类型字段分别在不同的索引中创建文档?
解决方案
推荐阅读
- c# - Xml 序列化 - System.InvalidOperationException:不能序列化“this”吗?
- vue.js - 为什么 vue 文档说 refs 不是响应式的,而实际上它们是响应式的
- drupal-8 - 如何在 Drupal 8 的树枝文件中显示登录的用户名?
- java - 如何在圆弧中间绘制文字?(用于饼图)
- ruby - 使用管理员权限 (UAC) 检索控制台输出
- search - 如何使用 NLP 技术创建搜索,以搜索输入的命名实体以及它可能具有的任何潜在名称变体?
- java - 回收者视图占据整个屏幕。不在其上方显示我的 UI 元素
- database - 是否有必要避免在 laravel 中更新模型的循环?
- javascript - ChartJS - 一个元素的工具提示覆盖用户应该能够选择的点
- python-3.x - 条形格式(种类)未显示正确的图(matplotlib)