Elasticsearch DSL 中的 IF 条件

IF condition in Elasticsearch DSL

我是 Elasticsearch 的新手,我有一个带有以下查询的 ELS 索引“student”。我只需要在 is_rep=True 时执行 student.name .

注意: is_rep 字段将不会明确可用

"query": {
  "bool": {
    "must": { "term": { "subject": "maths" }} ,
    "must": { "term": { "student.name": "xyz"}}
   }
}

谁能指导我实现这个

我会这样做:

{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "subject": "maths"
          }
        },
        {
          "bool": {
            "minimum_should_match": 1,
            "should": [
              {
                "term": {
                  "is_rep": false
                }
              },
              {
                "bool": {
                  "filter": [
                    {
                      "term": {
                        "student.name": "xyz"
                      }
                    },
                    {
                      "term": {
                        "is_rep": true
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  }
}