【问题标题】:How to remove documents from elasticsearch by date period or by size?如何按日期或按大小从弹性搜索中删除文档?
【发布时间】:2020-06-24 22:09:14
【问题描述】:

我想通过配置数据日期周期从弹性搜索中删除数据,例如,超过 30 天的数据,或者可能按大小,例如如果索引大小大于 100Mb,则删除旧数据。 我使用 logstash 将日志移动到 elasticsearch 中的一个索引。 我该怎么做?

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

    如果您想根据您的条件明确删除日志,您可以使用 delete_by_query

    POST /my_logs/_delete_by_query
    {
        "query": {
            "range": {
                "date": {
                    "lte": <your_target_date>
                }
            }
        }
    }
    

    【讨论】:

    • 谢谢,不过先试试leadrojmp和tanimak提供的解决方案
    • curl 示例:curl localhost:9200/customer/_delete_by_query -X POST -d '{"query":{"range":{"date":{"lte":"2021/08/13"}} }}' -H "Accept: application/json" -H "Content-Type: application/json" 别担心“lte”代表小于等于
    【解决方案2】:

    从当前索引中删除旧数据并不是一个简单的方法。 您可以配置 logstash 以每天创建新索引。然后您可以通过索引模式或别名访问您的所有数据。

    然后您将能够根据日期删除较旧的索引而不会出现太大问题。

    您可以使用 curator 自动执行这些操作 - https://www.elastic.co/guide/en/elasticsearch/client/curator/5.8/index.html

    请参阅这篇关于配置 logstash 以每天创建索引的帖子 Create a new index per day for Elasticsearch in Logstash configuration

    【讨论】:

    • 谢谢,如果我有多个索引,我需要使用某种模式访问带有日志的索引?
    • 如果您通过 Kibana 访问数据,您可以轻松创建索引模式并使用它,您可以使用别名使所有必需的索引看起来像一个实体,请参阅:stackoverflow.com/questions/48907041/…
    • 根据 elasticsearch 的版本,您可以使用 Index Lifecycle Management 来处理过去需要 curator 的大部分内容。按大小或日期删除是您可以使用索引生命周期管理而不是策展人的事情之一。
    • Tanimak 和 keandrojmp 谢谢你,也会研究这个解决方案。
    猜你喜欢
    • 1970-01-01
    • 2019-02-10
    • 2018-10-13
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    相关资源
    最近更新 更多