是否可以使用Kibana生成的查询从Elasticsearch中删除?

时间:2014-02-19 11:42:35

标签: elasticsearch logstash kibana

我不小心从Logstash将一些数据加载到Elasticsearch中。

基本上,我忘了在Logstash配置中包含start_position => "beginning",所以如果我删除.sincedb_*并重新运行,我将会有一小部分重复的数据。

我使用Kibana查看此数据,然后点击“检查”按钮查看已运行的查询:

curl -XGET 'http://els-server:9200/logstash-2014.02.19,logstash-2014.02.18/_search?pretty' -d '{
  "facets": {
    "0": {
      "date_histogram": {
        "field": "@timestamp",
        "interval": "10m"
      },
      "facet_filter": {
        "fquery": {
          "query": {
            "filtered": {
              "query": {
                "query_string": {
                  "query": "tags:\"a-tag-that-uniquely-matches-the-mistake\""
                }
              },
              "filter": {
                "bool": {
                  "must": [
                    {
                      "match_all": {}
                    },
                    {
                      "range": {
                        "@timestamp": {
                          "from": 1392723206360,
                          "to": "now"
                        }
                      }
                    },
                    {
                      "bool": {
                        "must": [
                          {
                            "match_all": {}
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "size": 0
}'

如果我在ELS服务器上运行它,它会找到相同的结果集(如预期的那样):

{
  "took" : 23,
  "timed_out" : false,
  "_shards" : {
    "total" : 10,
    "successful" : 10,
    "failed" : 0
  },
  "hits" : {
    "total" : 558829,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "facets" : {
    "0" : {
      "_type" : "date_histogram",
      "entries" : [ {
        "time" : 1392799200000,
        "count" : 91
      } ]
    }
  }
}

"count" : 91行匹配Kibana中显示的相同数量的事件。

如何将其转换为DELETE操作以删除这91个条目?

谢谢,
KB

1 个答案:

答案 0 :(得分:3)

您可以在1.0或更高版本中通过查询删除我相信。

Click here for ES doco on that API

我使用Chrome plugin Sense手动针对ES运行查询。

示例:

DELETE /twitter/tweet/_query
{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}

在您的情况下,您应该只使用查询的查询部分:

DELETE /twitter/_search
{
"query": {
            "filtered": {
              "query": {
                "query_string": {
                  "query": "tags:\"a-tag-that-uniquely-matches-the-mistake\""
                }
              },
              "filter": {
                "bool": {
                  "must": [
                    {
                      "match_all": {}
                    },
                    {
                      "range": {
                        "@timestamp": {
                          "from": 1392723206360,
                          "to": "now"
                        }
                      }
                    },
                    {
                      "bool": {
                        "must": [
                          {
                            "match_all": {}
                          }
                        ]
                      }
                    }
                  ]
                }
              }
            }
          }
}