2016-06-07 18 views
0

Ich habe Daten basierend auf einem Feld indiziert "A". Dem gleichen Wert von "A" sind etwa 18 Werte zugeordnet. Daher hat elasticsearch bei der Indexierung allen 18 Datensätzen den gleichen Wert von "A" zugewiesen, aber jedem Datensatz eine spezifische Version zugewiesen.Wie kann man mehrere Werte abrufen, die zur gleichen "ID" in elasticsearch gehören?

ZB: Datensatz 1: A = 1, _Version = 1, Datensatz 2: A = 1, _Version = 2, Datensatz 3: A = 1, _Version = 3 und so weiter.

Die Frage ist, wie bekomme ich alle diese Datensätze zu einem einzigen Wert von "A" mit Java abrufen? (BoolQuery, TermsQuery, Scroll, multiMatchQuery sind in diesem Fall nicht nützlich. Daher der Zweifel.)

+0

Es ist mir nicht klar, was Sie mit Feld A tun. Verwenden Sie A als ID? Können Sie zeigen, wie Sie die Dokumente indexieren? Die Version, auf die Sie sich beziehen, wird verwendet, wenn Sie das Dokument ändern. Es scheint mir, dass Sie dasselbe Dokument aktualisieren, anstatt neue Dokumente zu erstellen. Wenn A tatsächlich mehrere Werte hat, erhalten Sie normalerweise ein Array mit Werten für das Quelldokument zurück. Kurz gesagt können Sie einen Beispielcode geben, der erklärt, was Sie erreichen möchten. –

Antwort

0

Sie können eine Aggregationsabfrage durchführen, um nach allen Dokumenten zu suchen und diese mit einer eindeutigen Aggregation im Feld (A) zu aggregieren. Dadurch erhalten Sie alle möglichen Werte von A. Um ein Dokument abzufragen, das einem bestimmten Feldwert entspricht, können Sie nach dem Pfad filtern.

+0

Könnten Sie bitte mit einem Code-Snipet illustrieren? –