2016-12-20 4 views
0

私はElasticsearch 1.7とelastic4s DSLを使用しています。 私の問題は、&を追加することができないか、またはネストされたドキュメントにフィルターをかけることができないことです。Elasticsearch入れ子フィルタリング(elastic4s、scala)

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

付:

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))))) 
} 

は、その後、私はクエリを作成:ここで

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

が私のフィルタである: はたとえば、ここではケースクラス候補の私のインスタンスのJSON表現です:

case class IntCand(interviews: List[String]) 

case class Candidate(name: String, interviews: List[Interview]) 

case class Interview(clientId: Long, stateId: String) 
私は(「CANCELED」リスト())IntCandとのclientId = 1でフィルタするとき210

問題があり、レスポンスが私の候補を表示し、データを非正規化することによって、私は成功し

答えて

0

を(私はのclientIdやインタビューでフィルタしたい)

関連する問題