2016-12-20 5 views
0

Я использую Elasticsearch 1.7 и elastic4s DSL. Моя проблема: я не могу добавить и & или фильтровать на вложенном документе. Например, здесь есть представление JSON моего экземпляра случай класса кандидата:Elasticearch вложенная фильтрация (эластичный4s, scala)

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

Вот мой фильтр:

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

Тогда я построить запрос:

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

С :

case class IntCand(interviews: List[String]) 

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

case class Interview(clientId: Long, stateId: String) 

Проблема заключается в том, когда я фильтр на IntCand (List («ОТМЕНА»)) и ClientId = 1, ответ покажи мне Candidate (Я хочу, чтобы фильтровать по ClientId и интервью)

ответ

0

Я успеха на денормализации данные

Смежные вопросы