2016-02-05 6 views
5

Mam 2 indeksy w mojej konfiguracji Elasticsearch.Jak wykonać negatywne zapytanie łączące w ES

  • index_a
  • index_b

index_a ma pole location i mają około 1000 dokumentów, w których jako index_b ma pole city i mają około 600 dokumentów.

Chcę dowiedzieć się wszystkich locations od index_a, które nie są w polu city w index_b. Jakie zapytanie należy wykonać, aby osiągnąć powyższe?

+1

Wykonujesz dwa zapytania (wybierz wszystko z indeksu_b, a następnie przeprowadź wyszukiwanie w indeksie). Elasticsearch nie jest w stanie "połączyć" w żaden sposób dwóch indeksów w jednym zapytaniu, a raczej woli mieć denormalizowane dane, ** lub ** używać relacji "zagnieżdżony" lub relacji rodzic-dziecko. –

+0

Jak wspomina @AndreiStefan, może to być lepiej obsługiwane na poziomie aplikacji. – JVXR

+0

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

Odpowiedz

3

wykonać dwa zapytania: wybierz "wszystkie niezbędne informacje" z index_b, a następnie przeprowadzić wyszukiwanie na index_a z wykorzystaniem "info" z index_b.

Elasticsearch nie jest w stanie "połączyć" w żaden sposób dwóch indeksów w jednym zapytaniu, woli raczej mieć denormalizowane dane lub używać relacji zagnieżdżonych lub relacji rodzic-dziecko.