2016-08-05 5 views
1

Wenn ich ein Dokument in ES indizieren, versuche ich auf das gleiche Dokument innerhalb innerhalb des Aktualisierungsintervalls zuzugreifen und die Suche gibt das Ergebnis nicht zurück. Gibt es eine Realtime-GET-Unterstützung, die es ermöglicht, ein Dokument einmal indiziert zu bekommen, unabhängig von der "Aktualisierungsrate" des Index. Ich habe versucht, das refresh_interval auf 500ms anstatt auf 1s zu reduzieren, aber meine Suchanfrage findet sogar vor 500ms statt und es ist keine gute Idee, sie noch weiter zu reduzieren.Elasticsearch Echtzeit-GET-Unterstützung

Antwort

2

Nach dem Indexieren eines Dokuments können Sie es sofort abholen, ohne auf das Aktualisierungsintervall zu warten.

Die GET API is real-time

Also, wenn Sie Index ein neues Dokument wie dieses

POST index/type/1 
{ "name": "John Doe" } 

Sie es sofort erhalten können, ohne

GET index/type/1 

mit Warten Wenn Sie suchen, werden Sie jedoch Sie müssen warten, bis das Aktualisierungsintervall verstrichen ist, um das neue Dokument abzurufen oder die Aktualisierungs-API aufzurufen.

Der Vollständigkeit halber sei erwähnt, dass Sie beim Indexieren auch die Option haben, indem Sie den Parameter refresh=true wie unten angegeben übergeben. Beachten Sie jedoch, dass dies schlechte Auswirkungen auf die Leistung haben kann, weshalb es sparsam eingesetzt werden sollte.

POST index/type/1?refresh=true 
{ "name": "John Doe" } 

auch erwähnenswert, dass in ES 5, haben Sie die Möglichkeit zu sagen, ES wait for a refresh haben werden, bevor sie aus dem erstellen Aufruf Rückkehr:

POST index/type/1?refresh=wait_for 
{ "name": "John Doe" } 

In diesem Fall, sobald die Anforderung POST zurückkehrt, Sie können sicherstellen, dass das neue Dokument beim nächsten Suchanruf verfügbar ist.

+0

Perfekt! Das funktioniert. Danke @Val –

+1

Für die Suche können Sie erzwingen, mit der Aktualisierungs-API aktualisieren: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html – Pandawan

Verwandte Themen