elasticsearch Logstash管道不';不存在,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch Logstash管道不';不存在,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch Logstash管道不';不存在

elasticsearch Logstash管道不';不存在,elasticsearch,logstash,elasticsearch,Logstash,我是从一开始就遇到这个问题的 我创建了管道,如下所示 { "bool-pipeline": { "description": "converts FALSE/TRUE to boolean", "processors": [ { "convert": { "field": "secure_flag", "type": "b

我是从一开始就遇到这个问题的

我创建了管道,如下所示

{
    "bool-pipeline": {
        "description": "converts FALSE/TRUE to boolean",
        "processors": [
            {
                "convert": {
                    "field": "secure_flag",
                    "type": "boolean",
                    "ignore_missing": true
                }
            }
        ]
    }
}
我的有效值为FALSE,TRUE,[空白]

我能找回管道

我在Logstash配置中添加了如下内容

 input {
    file {
        path => "/Users/gibbs/Documents/search/mini_system.csv"
        start_position => beginning
        sincedb_path => "/dev/null"
    }
}
filter {
    csv {
        columns => [
               "secure_flag",
               "mini_system_key",
               "hw_contract_end_date"
        ]
        separator => ","
        }
  mutate {
    remove_field => ["path", "host"]
  }
}
output {
    stdout {
        codec => rubydebug
    }
    elasticsearch {
        action => "index"
        hosts => ["127.0.0.1:9200"]
        index => "mini_system"
        document_id => "%{mini_system_key}"
        pipeline => "%{bool-pipeline}"
    }
}
但是当我加载数据时,它抛出下面的错误

    [2020-05-10T16:13:05,691][DEBUG][o.e.a.b.T.BulkRequestModifier] [gopir-mac-1] failed to execute pipeline [_none] for document [mini_system/_doc/50395971|1038832]
java.lang.IllegalArgumentException: pipeline with id [%{bool-pipeline}] does not exist
    at org.elasticsearch.ingest.IngestService.executePipelines(IngestService.java:407) [elasticsearch-7.6.2.jar:7.6.2]
    at org.elasticsearch.ingest.IngestService.access$000(IngestService.java:75) [elasticsearch-7.6.2.jar:7.6.2]
    at org.elasticsearch.ingest.IngestService$3.doRun(IngestService.java:384) [elasticsearch-7.6.2.jar:7.6.2]
    at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:692) [elasticsearch-7.6.2.jar:7.6.2]
    at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-7.6.2.jar:7.6.2]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_231]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_231]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_231]
我不懂。我已经试了好几个小时了

有什么建议吗


当我检查日志时,我在弹性搜索日志中看到了这个错误。Logstash只有一行代码。

您的摄取管道名称是
bool pipeline
,您应该在
elasticsearch
中使用它,而不是
%{bool pipeline}


%{FIELD}
用于与事件相关的值,这不是您使用
%{bool pipeline}的情况
将使logstash尝试从事件中名为
bool pipeline
的字段中提取具有摄取管道名称的值,由于该字段不存在,因此您将收到此错误。

请参阅您所指的其他问题中的我的注释;-)只需使用不带字符串的
pipeline=>“bool pipeline”
expansion@Val我努力尝试后解决了它。那
%
误导了我,真是太好了,很高兴它帮了我的忙@瓦尔:我能做下面的事吗<代码>如果{u source.secure\u flag==%{FIELD}{pipeline=>“bool pipeline”}否则如果“partners”===%{FIELD}{pipeline=>“partners pipeline”}它不起作用。我建议你创建一个新问题,因为你最初的需求已经解决了。我仍在尝试进一步理解第二段。如果可能的话,请帮忙。什么是事件以及它与示例相关的值。事件是通过logstash管道的所有内容,日志文件中的每一行都是logstash的事件,例如,在您的示例中,字段
mini\u system\u key
可能对csv中的每一行具有不同的值,在elasticsearch中,您使用此值作为
文档id
,访问logstash中字段值的方法是使用
%{field}
格式,因为此字段的值取决于每个事件(例如,日志行)。您可以在“谢谢”中阅读更多内容。这是一个很好的解释,我可以在Logstash的ES输出插件中指定多个管道吗?@Gibbs每个ES输出只能指定一个管道,但可以使用if/else逻辑指定多个ES输出