2016-04-01 10 views
2

Ich habe eine ElasticSearch-Instanz in AWS, mit der ich über den JavaScript-Client in einer MeteorJS-Anwendung eine Verbindung herstellen konnte. Es gab kein Problem beim Erstellen von Zuordnungen (Indizes und Analysatoren) oder Aktualisieren von Zuordnungen.ElasticSearch AWS-Anfrage Timeout

Das Problem tritt immer dann auf, wenn eine Anforderung für einen Index, eine Aktualisierung oder eine Löschung an die Instanz gesendet wird. Nach dem Serving über 200 Anfrage, die ElasticSearch-Instanz beginnt werfen Anfrage Timeout-Fehler mit Code 408. Zunächst dachte ich, mehrere einzelne Anfrage ist die Casue, also entschied ich mich zu Bulk-Push. Unten ist das Snippet für die Bulk-Push-Anfrage.

var bulk = SearchService.ElasticQueue.splice(0, 1000); 
console.log('Size: ', bulk.length); 
if (bulk.length > 0) { 
    EsClient.bulk({ 
    body: bulk 
    }, function (error, response) { 
    if (!error) { 
     console.log(response); 
    } else { 
     console.log(error); 
    } 
    }); 
} 

Die SearchService.ElasticQueue ist eine Form der Warteschlange und ein cron-Job läuft häufig Daten von ihm zu holen und Bulk-Anforderungen auszuführen. Ich habe auch versucht, die Anzahl der Dokumente in der Massenanforderung zu reduzieren und auch Anfrage Timeout in der Verbindungskonfiguration erhöht, aber es scheint nicht zu helfen. Ich würde mich über jeden Vorschlag freuen.

Danke.

+0

wir auch ein Timeout zu sehen. kann noch keine Erklärung finden. Timeout nach 30 Sekunden. Hast du schon eine Lösung gefunden? –

+0

Es scheint Konnektivitätsproblem zu sein. –

+0

Das gleiche hier. Ich verwende 'curl' und habe TIMEOUTs, aber ich habe bemerkt, dass Datensätze zufällig zum Index hinzugefügt werden. Hast du Glück, dieses Problem zu lösen? –

Antwort

0

Es gibt nur einen Weg, die Sie verwenden können:

wait_for_completion=false 

, die eine Task ID zurückkehren und dann können Sie die Daten ziehen mit dieser Task ID