当前位置: 首页 > 面试题库 >

elasticsearch使用logstash和csv删除文档

景令秋
2023-03-14
问题内容

有什么方法可以使用Logstash和csv文件从ElasticSearch删除文档?我阅读了Logstash文档,却一无所获,并尝试了一些配置,但是使用操作“删除”却没有任何反应

output {
    elasticsearch{
        action => "delete"
        host => "localhost"
        index => "index_name"
        document_id => "%{id}"
    }
}

有人尝试过吗?我应该在配置的输入和过滤器部分添加一些特殊的东西吗?我使用文件插件作为输入,使用csv插件作为过滤器


问题答案:

绝对可以按照您的建议去做,但是如果您使用的是Logstash
1.5,则需要使用该transport协议,因为delete通过HTTP协议进行操作时Logstash
1.5中存在一个错误(请参见问题#195)。

因此,如果您的delete.csvCSV文件格式如下:

id
12345
12346
12347

您的delete.confLogstash配置如下所示:

input {
    file {
        path => "/path/to/your/delete.csv"
        start_position => "beginning"
        sincedb_path => "/dev/null"
    }
}
filter {
    csv {
        columns => ["id"]
    }
}
output {
    elasticsearch{
        action => "delete"
        host => "localhost"
        port => 9300                         <--- make sure you have this
        protocol => "transport"              <--- make sure you have this
        index => "your_index"                <--- replace this
        document_type => "your_doc_type"     <--- replace this
        document_id => "%{id}"
    }
}

然后,在运行时,bin/logstash -f delete.conf您将能够删除其CSV文件中指定了ID的所有文档。



 类似资料:
  • 问题内容: 如何使用Logstash将数据从Elasticsearch导出到CSV?我只需要包括特定的列。 问题答案: 安装2个插件:elasticsearch输入插件和csv输出插件。然后创建一个配置文件。这是这种情况的一个很好的例子。 您现在就可以开始了,只需运行: 并检查中指定的文件。

  • 我想删除来自logstash的弹性搜索中的旧日志。 我读过关于馆长可以用来删除这个。 但它总是指出,它将删除比这么多天都旧的指数。如果我执行它,它真的会删除我的索引吗?或者只是那个特定索引中的旧日志。 我有自定义索引,如a、b、c等。我的索引中没有时间字符串参数。 策展人删除索引-早于14-时间单位天-时间字符串%Y.%m.%d-regex'^logstash-' 如何执行删除这些格式的索引。?

  • 问题内容: 我只想删除第三行中值为‘0’的行。数据示例如下: 因此,第一行将需要删除,而第二行将保留。 到目前为止,我所拥有的如下: 任何帮助都会很棒 问题答案: 你很亲密 目前,您将整数与进行比较,然后将其与字符串进行比较。当您从文件中读取数据时,它是一个字符串而不是整数,因此这就是您的整数检查当前失败的原因: 另外,您可以使用关键字使当前代码略显pythonic,从而减少代码中的行,并且可以省

  • 假设Oracle模式有以下表和列: 我有我的Elasticsearch文档,其中根元素是一个国家,它包含该国家的所有部门,而这些部门又包含各自部门的所有员工。 因此,文档结构如下所示: 我希望能够在每个表上运行单独的输入jdbc查询,并且每当基表中的数据被添加/更新/删除时,它们应该在elasticsearch文档中创建/更新/删除数据。 这是一个示例问题,实际的表和数据结构更加复杂。所以我不是在

  • 我有一个CSV文件,它有重复的列标题,所以我不能使用导入CSV来完成这项工作。标题名称是动态的。我需要得到第三列、第四列以及之后的每四列(例如:从0列开始,第2列、第3列、第7列、第11列、第15列…)。 我有重复列名的原因是头3需要与头0相同的名称,以四个组为一组。0个 我使用“获取内容”,因为我不知道如何使用“导入Csv”实现此功能。我必须使用Import Csv来获取列数,而我无法用get

  • 问题内容: 我正在运行基本的ELK堆栈。在vm中运行的所有三个组件。Logstash正在侦听TCP 9140,以获取其输入通过NxLog代理从大约30个Windows Server 2008s和30个Windows Server 2003事件(evts)中接收的信息,并将其输出到elasticsearch。 这个已经运行了好几个星期了。我可以看到ElasticSearch每天都在创建索引,并且可以