2016-02-05 14 views
5

Ich habe 2 Indizes in meinem Elasticsearch-Setup.Wie führe ich eine negative Abfrage in ES durch?

  • index_a
  • index_b

index_a hat ein Feld location und haben etwa 1000 Dokumente, bei denen als index_b ein Feld city und haben etwa 600 Dokumente hat.

Ich möchte herausfinden, alle locations von index_a, die nicht in der city Feld in index_b sind. Welche Abfrage sollte ich machen, um das oben genannte zu erreichen?

+1

Sie führen zwei Abfragen aus (wählen Sie alle aus index_b aus und führen Sie dann die Suche auf index_a durch). Elasticsearch ist nicht in der Lage, zwei Indizes in einer einzigen Abfrage zu "verbinden" und verwendet lieber denormalisierte Daten, ** oder ** verwendet "verschachtelte" oder Eltern-Kind-Beziehungen. –

+0

Wie @AndreiStefan bereits erwähnt hat, könnte dies auf Anwendungsebene besser gehandhabt werden. – JVXR

+0

http://stackoverflow.com/questions/29799207/is-it-possible-to-compare-two-fields-from-different-types-on-a-query-dsl – CodeNotFound

Antwort

3

Sie führen zwei Abfragen: Wählen Sie "alle notwendigen Informationen" von index_b, dann führen Sie die Suche auf index_a die "info" von index_b verwenden.

Elasticsearch ist nicht in der Lage, zwei Indizes in einer einzigen Abfrage zu "verbinden" und verwendet lieber denormalisierte Daten oder verschachtelte oder übergeordnete Beziehungen.

Verwandte Themen