Ich habe einen ES-Index mit mittelgroßen Dokumenten (15-30 MB mehr oder weniger).
Jedes Dokument hat ein boolesches Feld und die meisten Benutzer möchten nur wissen, ob eine bestimmte Dokument-ID dieses Feld auf true gesetzt hat.
Beeinflusst die Dokumentgröße die Leistung dieser Abfrage?
%Vor%Und wird eine "Größe": 0 Abfrage zu einer besseren Zeitleistung führen?
Wenn Sie "size":0
zu Ihrer Anfrage hinzufügen, vermeiden Sie eine Nettoübertragung. Dieses Verhalten verbessert Ihre Ausführungszeit.
Aber wie ich Ihren Anwendungsfall verstehe, können Sie count
Eine Beispielabfrage:
%Vor%Mit dieser Abfrage, die nur prüft, ob eine Summe vorhanden ist, wissen Sie, ob ein Dokument mit einer ID das bool-Feld auf true / false gesetzt hat, abhängig vom Wert, den Sie in bool_field at query angeben. Das wird ziemlich schnell sein.
Wenn Sie bedenken, dass Elasticsearch Ihre Felder indiziert, ist die Dokumentgröße kein großes Problem für die Leistung. Die Verwendung der Größe 0 hat keinen Einfluss auf die Abfrageleistung in Elasticsearch, wirkt sich aber auf die Leistung zum Abrufen des Dokuments aufgrund der Netzwerkübertragung positiv aus.
Wenn Sie nur ein boolesches Feld für ein bestimmtes Dokument überprüfen möchten, können Sie einfach API erhalten , um das Dokument abzurufen, das gerade das zu überprüfende Feld abruft:
%Vor% In diesem Fall ruft Elasticsearch nur das Dokument mit _id = 1000
und das Feld my_field
ab. So können Sie den booleschen Wert überprüfen.
Wenn ich Ihre Frage anschaue, sehe ich, dass Sie die von Ihnen verwendete elasticsearch-Version nicht erwähnt haben. Ich würde sagen, dass es viele Faktoren gibt, die die Leistung eines ElasticSearch-Clusters beeinflussen.
Wenn Sie jedoch davon ausgehen, dass es sich um die neueste Elastizitätssuche handelt, und wenn Sie bedenken, dass Sie nach einem einzigen Wert suchen, besteht der beste Ansatz darin, Ihre Abfrage in eine Abfrage ohne Filterung zu ändern. Filter sind ziemlich schnell in der elastischen Suche und sehr leicht im Cache gespeichert. Wenn Sie eine Abfrage ohne Scoring durchführen, wird die Scoring-Phase vollständig vermieden (Berechnung der Relevanz usw.).
Dazu:
%Vor%}
Beachten Sie, dass wir die Such-API verwenden. Der constant_score wird verwendet, um den Begriff Abfrage in einen Filter zu konvertieren, der von Natur aus schnell sein sollte.
Für weitere Informationen. Bitte beachten Sie exakte Werte finden
Tags und Links elasticsearch