16

Ich habe Elasticsearch-1.1.0 verwendet, um Tweets zu indizieren. Der Indizierungsprozess ist in Ordnung. Dann habe ich die Version aktualisiert. Jetzt benutze ich Elasticsearch-1.3.2, und ich erhalte diese Mitteilung zufällig:Fixed Read Zeitüberschreitung in Elasticsearch

Exception happened: Error raised when there was an exception while talking to ES. 
ConnectionError(HTTPConnectionPool(host='127.0.0.1', port=8001): Read timed out. (read timeout=10)) caused by: ReadTimeoutError(HTTPConnectionPool(host='127.0.0.1', port=8001): Read timed out. (read timeout=10)). 

Snapshot der Zufälligkeit:

Happened --33s-- Happened --27s-- Happened --22s-- Happened --10s-- Happened --39s-- Happened --25s-- Happened --36s-- Happened --38s-- Happened --19s-- Happened --09s-- Happened --33s-- Happened --16s-- Happened 

--XXs-- = after XX seconds 

Kann jemand darauf hin, wie das Read timed out Problem zu beheben?

Vielen Dank.

Antwort

13

Es ist schwer, eine direkte Antwort zu geben, da der Fehler, den Sie sehen, möglicherweise mit dem von Ihnen verwendeten Client zusammenhängt. Eine Lösung kann jedoch eine der folgenden sein:

1. Erhöhen Sie das Standardzeitlimit global, wenn Sie den ES-Client erstellen, indem Sie den Timeout-Parameter übergeben. Beispiel in Python

es = Elasticsearch(timeout=30) 

2.Setzen Sie die Zeitüberschreitung je nach Anforderung durch den Client ein. Entnommen aus Elasticsearch Python-Dokumenten unten.

# only wait for 1 second, regardless of the client's default 
es.cluster.health(wait_for_status='yellow', request_timeout=1) 

Die oben wird dem Cluster etwas mehr Zeit darauf zu reagieren geben

+1

Ich habe ein ähnliches Problem, und ich habe das Timeout auf 60 Sekunden erhöht und immer noch Timeouts erhalten. Ich denke, die Frage ist, warum die elastische Suche so lange braucht, um darauf zu reagieren? – digitaldavenyc

+0

Hängt von einer Vielzahl von Gründen ab. Hast du richtige Indizes? Möglicherweise müssen Sie eine neue Frage stellen. – Skillachie

+2

Gibt es eine neue Frage über die Ursache? Ich sehe das gleiche Problem und ich frage mich, was die Ursache von elasticsearch ist, die lange braucht, um zu antworten. – Suanmeiguo

13

Versuchen:

es = Elasticsearch(timeout=30, max_retries=10, retry_on_timeout=True) 

Es wird ReadTimeoutError möglicherweise nicht vollständig vermeiden, aber es ihnen minimalisieren.

0

Für was es wert ist, fand ich, dass dies zu einem gebrochenen Indexzustand zu stehen scheint.

Es ist sehr schwierig, dieses Problem zuverlässig neu zu erstellen, aber ich habe es mehrmals gesehen; Operationen laufen normal ab, mit Ausnahme von bestimmten, die periodisch ES zu hängen scheinen (insbesondere das Aktualisieren eines Index scheint es).

Löschen eines Index (curl -XDELETE http://localhost:9200/foo) und Neuindizierung von Grund auf neu für mich behoben.

Ich empfehle, regelmäßig zu löschen und neu zu indizieren, wenn Sie dieses Verhalten sehen.