2016-12-20 6 views
0

Ich verwende Elasticsearch 1.7 und elastic4s DSL. Mein Problem ist, ich kann nicht hinzufügen und & oder Filter auf einem verschachtelten Dokument. Zum Beispiel, hier ist eine JSON Darstellung meiner Instanz Fallklasse Kandidat:Elasticsearch verschachtelte Filterung (elastic4s, scala)

{ 
    "name": "Samy" 
    "interviews": [ 
    { 
     "clientId": 0, 
     "stateId": "CANCELED", 
    }, 
    { 
     "clientId": 1, 
     "stateId": "APPROVED" 
    } 
    ] 

Hier mein Filter:

def filtering(interviewAndCandidates: IntCand)(implicit user: PublicUser): Seq[FilterDefinition] = { 
nestedFilter("interviews").filter(termFilter("clientId", user.id)) :: 
List(or(interviewAndCandidates.interviews.map(state ⇒ nestedFilter("interviews").filter(termFilter("stateId", state))))) 
} 

Dann baue ich die Abfrage:

var request: SearchDefinition = search in "myIndex" -> "candidate" query { 
    filteredQuery query { 
    matchAllQuery 
    } filter { 
    and(filters) 
    } 
} 

Mit :

Das Problem ist, wenn ich auf IntCand Filter (List ("ABGEBROCHEN")) und clientId = 1, die Antwort zeigen Sie mir das Candidate (I filternde auf clientId und Interviews)

Antwort

0

ich durch Denormalisierung der Daten erfolgreich

Verwandte Themen