2016-08-04 11 views
0

da ich die folgenden Daten in Elasticsearch (2.x)Entfernen n-mal dupliziert Daten in Elasticsearch

Alle json Nachrichten werden unter dem gleichen Index „test“

{"message_id": "1", "severity": "info"} 
{"message_id": "1", "severity": "info"} 
{"message_id": "1", "severity": "info"} 
{"message_id": "1", "severity": "info"} 
{"message_id": "2", "severity": "critical"} 
{"message_id": "2", "severity": "critical"} 
{"message_id": "2", "severity": "critical"} 
{"message_id": "2", "severity": "critical"} 

Namen gespeichert Jeder JSON wurde 4 Mal dupliziert. Gibt es eine Möglichkeit ich eine Löschabfrage in elastischen serch laufen kann und erhalten nur

{"message_id": "1", "severity": "info"} 
{"message_id": "2", "severity": "critical"} 

Antwort

0

Bist Du sicher, dass Nachrichten doppelt vorhanden sind wirklich gespeichert? Beachten Sie, dass diese 4 JSONs

{"message_id": "1", "severity": "info"} 
{"message_id": "1", "severity": "info"} 
{"message_id": "1", "severity": "info"} 
{"message_id": "1", "severity": "info"} 

ist die gleiche wie:

{"message_id": "1", "severity": "info"} 

die gleichen JSON Anwendung (PUT), führen in ein elastisch-Suche Dokument mit neuen ersetzt wird.

+0

Ja, ich bin sicher, dass es 4 Einträge gibt. Jedes Mal, wenn es in die elastische Suche eingefügt wurde, wurde die neue _id generiert. d. Alle 4 Datensätze haben unterschiedliche _id-Werte. Ich will nur diese beseitigen und nur eine Zeile bekommen. Wie kann ich es tun? – srinath

+0

Wenn eine neue ID generiert wird, bedeutet es logisch, dass Sie es nicht setzen. Können Sie bitte eine Zuordnung Ihres Index abrufen (https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-mapping.html)? –

0

Schritt 1: müssen zuerst alle Duplikate mit Aggregation finden:

curl -XGET 'http://localhost:9200/test/type1/_search?pretty=true' -d '{ 
    "size": 0, 
    "aggs": { 
    "duplicateCount": { 
     "terms": { 
     "field": "message_id", 
     "min_doc_count": 2 
     }, 
     "aggs": { 
     "duplicateDocuments": { 
      "top_hits": {} 
     } 
     } 
    } 
    } 
}' 

Schritt 2: Nachdem Sie die Liste der Duplikate erhalten, eine Schleife laufen mit dem ‚_id‘ auf all jene Dokument aufrufen DELETE in Schritt 1 zurückgegeben.