gpt4 book ai didi

elasticsearch - 使用 Redis 键作为 Elasticsearch 索引名称

转载 作者:IT王子 更新时间:2023-10-29 06:11:04 25 4
gpt4 key购买 nike

我正在尝试使用 logstash 索引器将数据从 redis 移动到 elasticsearch。

在 redis 端的输入端,我为来自 logstash 输出的一组日志提供了一个“ key ”。

 redis
{
host => "server
port => "7379"
data_type => "list"
key => "aruba"
}

在输入端,我读取输入中的每个键。

input
{
redis
{
host => "localhost"
port => "6379"
data_type => "list"
type => "redis-input"
key => "logstash"
codec => "json"
threads => 32
batch_count => 1000
#timeout => 10
}
redis
{
host => "localhost"
port => "6379"
data_type => "list"
type => "redis-input"
key => "aruba"
codec => "json"
threads => 32
batch_count => 1000
#timeout => 10
}
}

我正在尝试使用 logstash 中的键写入索引。即

aruba-2017.24.10。类似的东西,但输出总是转到 logstash。我试过了

if[redis.key] == "xyz"
{
elasticsearch {index => "xyz-%{time}"}
}

或者 if[key] == "xyz"....也试过了

elasticsearch
{
index => "%{key}-%{time}"
}

和 elasticsearch{index => "%{redis.key}-%{time}"}

等这些似乎都不起作用。

最佳答案

虽然 @sysadmin1138 写的是访问嵌套字段是通过 [field][subfield] 而不是 [field.subfield] 你的问题是你正在尝试访问不在您的日志事件中的数据。

虽然在 Redis 中,您的日志事件有一个与之关联的键,但这不是事件本身的一部分,仅用于从 Redis 访问事件。当 Logstash 从 Redis 获取事件时,它使用该“键”来指定它想要的事件,但该键并没有使其成为弹性的。要亲自查看,请尝试使用 stdout{codec => "rubydebug"} 作为输出插件运行 logstash,它会漂亮地打印您的整个日志事件,让您可以查看包含哪些数据。

每个 logstash 插件都有 add_field 参数来拯救你。您可以添加到您的输入:

redis
{
host => "localhost"
port => "6379"
data_type => "list"
type => "redis-input"
key => "aruba"
codec => "json"
threads => 32
batch_count => 1000
add_field => {
"[redis][key]" => "aruba"
}
}

然后将您的条件更改为使用 [redis][key] 将使您的代码正常工作。

(为 RELK 栈干杯)

关于elasticsearch - 使用 Redis 键作为 Elasticsearch 索引名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com