首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用具有logstash elaticsearch输出更新特性的ingest管道

如何使用具有logstash elaticsearch输出更新特性的ingest管道
EN

Stack Overflow用户
提问于 2020-08-09 16:36:13
回答 1查看 807关注 0票数 0

我使用Logstash输出将数据发布到Elasticsearch。两个记录被合并,以创建来自请求和响应的单个记录。这段代码没有问题。

代码语言:javascript
复制
elasticsearch {
  hosts => [ "localhost:9200" ]
  index => "transactions"
  action => "update"
  doc_as_upsert => true
  document_id => "%{tid}"
  script =>'
    if(ctx._source.transaction=="request"){
      ctx._source.status = params.event.get("status");
    }else if(ctx._source.transaction=="response"){                           
      ctx._source.api = params.event.get("api");                            
    }
}

现在,我正在尝试添加一个新的字段,上面的记录更新使用ingest管道。

代码语言:javascript
复制
PUT _ingest/pipeline/ingest_pipe2
{
  "description" : "describe pipeline",
  "processors" : [
    {
      "set" : {
        "field": "api-test",
        "value": "new"
      }
    }
  ]
}

这将向传入事件添加一个新字段。下面的代码可以很好地工作。

代码语言:javascript
复制
elasticsearch {
  hosts => [ "localhost:9200" ]
  index => "transactions"
  pipeline => "ingest_pipe2"  
}

问题是logstash更新和ingest管道更新都不能一起工作。

代码语言:javascript
复制
elasticsearch {
  hosts => [ "localhost:9200" ]
  index => "transactions"
  pipeline => "ingest_pipe2"**
  action => "update"
  doc_as_upsert => true
  document_id => "%{tid}"
  script =>'
    if(ctx._source.transaction=="request"){
      ctx._source.status = params.event.get("status");
    }else if(ctx._source.transaction=="response"){                           
      ctx._source.api = params.event.get("api");                            
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-10 05:01:07

不可能在doc_as_upsert中使用吞食管道

不支持在doc_as_upsert中使用吞食管道。

您可以找到更多信息-- 这里这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63328861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档