2013-02-21 9 views
6

Ich habe einen ElasticSearch-Cluster mit Big Data erstellt, und der Client kann eine Suchanforderung an ihn senden. Manchmal kostet der Cluster viel Zeit, um eine Anfrage zu bearbeiten. Meine Frage ist, gibt es eine API, um den angegebenen Thread zu töten, der zu viel Zeit kostet?Wie kann der Thread der Suchanfrage auf elasticsearch cluster beendet werden? Gibt es eine API dafür?

+0

Ich möchte auch die Antwort auf diese Frage wissen; Es scheint keine Möglichkeit zu geben, Abfragen in ES zu verwalten/zu überwachen, nachdem man durch die Quelle geschaut hat, also wäre es schön, wenn jemand hier reinkommt. – MatthewJ

+0

Ich habe auch googlegroups gefragt, und ein Typ sagte, dass ich eine bestehende Anfrage nicht stoppen kann und schlage vor, dass ich eine Zeitüberschreitung bei einer Anfrage einstelle, um lange laufende Anfragen zu verhindern. – Hoony

Antwort

2

Ich wollte jetzt auf diese Antwort folgen, dass elasticsearch 1.0.0 veröffentlicht wurde. Ich freue mich, Ihnen mitteilen zu können, dass neue Funktionen eingeführt wurden, die einen gewissen Schutz für den Heap, den Schutzschalter, implementieren.

Mit der aktuellen Implementierung versucht der Leistungsschalter zu antizipieren, wie viele Daten in den Felddatencache geladen werden. Wenn der Grenzwert überschritten wird (standardmäßig 80%), wird der Leistungsschalter ausgelöst indem Sie Ihre Abfrage beenden.

Es gibt zwei Parameter für Sie einstellen, wenn Sie sie ändern möchten:

indices.fielddata.breaker.limit 

indices.fielddata.breaker.overhead 

Der Overhead ist die Konstante, die verwendet wird, um abzuschätzen, wie viele Daten in das Feld Cache geladen werden; Dies ist standardmäßig 1,03.

Dies ist eine aufregende Entwicklung von elasticsearch und ein Feature, auf das ich seit Monaten gewartet habe.

Dies ist die Pull-Anfrage, wenn Sie interessiert sind zu sehen, wie es gemacht wurde; Danke an Dakrone dafür!

https://github.com/elasticsearch/elasticsearch/pull/4261

hoffte, das hilft, MatthewJ

2

Derzeit ist es nicht möglich, die langen laufenden Abfragen zu töten oder zu stoppen, aber Elasticsearch wird einen Task-Management-api hinzuzufügen, dies zu tun. Die API wird wahrscheinlich in Elasticsearch 5.0, vielleicht 2016 oder später, hinzugefügt.

siehe Task management 1 und Task management 2.