2013-05-30 12 views
5

Używam dokumentów zagnieżdżonych w ES. Mam zagnieżdżoną tablicę wewnątrz jednego obiektu i chciałbym móc filtrować tablicę z zagnieżdżonymi zapytaniami (nie tylko filtr root/parent document, ale także tablica zagnieżdżona).Jak filtrować tablicę zagnieżdżoną w odpowiedzi?

Zagnieżdżone filtry umożliwiają filtrowanie dokumentu głównego. Na przykład, jeśli mam indeks "blogi" i wpisuję "blog" oraz wewnątrz bloga, mam właściwość "komentarze" (tablica komentarzy), z {"typ": "zagnieżdżony"} w odwzorowaniach, więc na przykład chcę do filtrowania blogów, które mają komentarze, które mają tytuł taki jak "dziś" (na przykład z zapytaniem o dopasowanie), ale w każdym blogu chcę również wyświetlać tylko komentarze zawierające "dzisiaj" w tytule.

Wiem, jak zagnieżdżone filtry. Również relacja child-parent nie jest dobra do tego celu, ponieważ nie ma żadnych dokumentów podrzędnych w odpowiedzi jako część dokumentu nadrzędnego.

Czy można to zrobić bezpośrednio w elastycznym wyszukiwaniu, bez dodawania dodatkowej logiki do aplikacji, co może wpływać na wydajność? Czy jest tam i planuje dodać tę opcję jako nową opcję w zagnieżdżonym zapytaniu/filtrze w następnych wersjach lub coś podobnego?

Dzięki

... Dodaj

na przykład przyjrzeć się tej Doc:

 
..... 
"blogs" :[ 
    { 
     "id":1000, 
     "content":"hello world!!!", 
     "author:"evan", 
     "createTime":"2013-05-31", 
      "comments" : [ 
        {"author":"jack", id:"1", "content":"test test","createTime":"2013-05-31"}, 
        {"author":"tom", id:"2", "content":"test test","createTime":"2013-05-30"}, 
        {"author":"oliver", id:"3", "content":"test test","createTime":"2013-05-30"}, 
        {"author":"Jonesie", id:"4", "content":"test test","createTime":"2013-05-29"} 
      ] 
    }, 
    { 
     "id":1001, 
     "content":"test data", 
     "author:"jack", 
     "createTime":"2013-05-30", 
      "comments" : [ 
        {"author":"Zach", id:"11", "content":"test data 1","createTime":"2013-05-31"}, 
        {"author":"tom", id:"21", "content":"test data 2","createTime":"2013-05-31"}, 
        {"author":"oliver", id:"31", "content":"test test 3","createTime":"2013-05-28"}, 
        {"author":"Jonesie", id:"41", "content":"test test 4","createTime":"2013-05-27"} 
      ] 
    } 
] 
..... 

chciałbym uruchomić kwerendę takich jak:

filtra przez blogów. createTime == '2013-05-31' i filtruj blogi.comments.createTime == '2013-05-31'

spodziewać:

 
..... 
"blogs" :[ 
    { 
     "id":1000 
     "content":"hello world!!!", 
     "author::"evan", 
     "createTime":"2013-05-31" 
      "comments" : [ 
        {"author":"jack", id:"1", "content":"test test","createTime":"2013-05-31"} 
      ] 
    } 
] 
.... 

dzięki

+1

Czy możesz dodać dane testowe do swojego pytania? Nie jest całkiem jasne, jak wygląda twoja struktura danych. – imotov

Odpowiedz

Powiązane problemy