0

我正在使用 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("CANCELED")) 和 clientId=1 时,响应显示我候选人(我想过滤 clientId 和采访)

4

1 回答 1

0

我通过非规范化数据成功

于 2017-01-03T09:09:20.930 回答