我正在使用Elasticsearch 1.7和elastic4s DSL。 我的问题是我无法添加和&或过滤嵌套文档。 例如,这是我的案例类Candidate实例的JSON表示:
{
"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(" CANCELLED"))和clientId = 1时,响应显示我是候选人(我希望过滤clientId和访谈)
答案 0 :(得分:0)
我通过对数据进行非规范化来取得成功