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