Я использую 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 и интервью)