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
Czy możesz dodać dane testowe do swojego pytania? Nie jest całkiem jasne, jak wygląda twoja struktura danych. – imotov