fancy / efficient Weise zu überprüfen, ob ein Dokument bei elasticsearch existiert

8

Was ist der effizienteste Test, wenn ein Dokument mit einer _id existiert?

Ich könnte natürlich tun:

%Vor%

Oder ich könnte mit gehen: Wie überprüfe ich nach doppelten Daten auf ElasticSearch? und schicke ein leeres Dokument, denke ich.

Etwas effizienter?

    
eran 12.06.2013, 06:35
quelle

3 Antworten

15

Sie können das HTTP-HEAD-Verb nur zum Abrufen der Header verwenden.

%Vor%

Sie erhalten entweder 200 oder 404 ohne einen Teil des Dokumententextes.

    
Louis-Philippe Huberdeau 12.06.2013, 12:11
quelle
6

Wenn in einer Version vor 2.1 die "Search Exists API" verwendet werden kann.

Ein Beispiel:

Durchsuchen Sie den Twitter-Index nach einem Tweet-Typ durch den Benutzer "kimchy"

%Vor%

Der Antworttext enthält ein true oder false, wenn Tweets von diesem Benutzer vorhanden sind:

%Vor%

Sie können die Abfrage auch so im Anfragetext senden (POST oder GET funktionieren beide):

%Vor%

Die Antwort wird die gleiche sein.

    
Micah 07.11.2014 17:21
quelle
2

Ich würde einfach die get-API verwenden, die eine 404 zurückgibt, wenn das Objekt nicht existiert sonst das Objekt selbst. Wenn Sie die Java-API verwenden, finden Sie eine Methode isExists im Objekt GetResponse .

Wenn das Feld _id , auf das Sie sich beziehen, nicht in Ihren Dokumenten enthalten ist, würde fields=_id weder das _source noch ein bestimmtes Feld unter fields zurückgeben. Aber Sie würden das _id im Header der Antwort trotzdem zurückbekommen.

Wenn Sie die REST-API verwenden, können Sie Folgendes verwenden:

curl -XHEAD 'http://localhost:9200/twitter/tweet/1

es wird das Dokument nicht zurückgeben, aber nur 404, wenn nicht gefunden, sonst 200. Der Hauptteil der Antwort enthält auch das exists-Flag mit der gleichen Bedeutung.

Interessant ist, dass die Verwendung der HEAD-Methode einer get-Anforderung intern zugeordnet wird, weshalb sie nicht direkt der Java-API ausgesetzt ist. Sie können jedoch das gleiche Verhalten erhalten, indem Sie mit folgendem Code GetRequest erstellen:

%Vor%     
javanna 12.06.2013 07:40
quelle

Tags und Links