2014-02-19 2 views
1

Я случайно загрузил некоторые данные в Elasticsearch из Logstash.Возможно ли использовать запрос сгенерированного Kibana для удаления из Elasticsearch?

В принципе, я забыл включить start_position => "beginning" в конфигурацию Logstash, поэтому, если я удалю .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

ответ

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": {} 
          } 
         ] 
         } 
        } 
        ] 
       } 
       } 
      } 
      } 
} 
+0

использование "_delete/твиттер/_query_" вместо "_delete/Twitter/_search_" – kayn

Смежные вопросы