具有逻辑 OR 和 AND 条件的 Elasticsearch Query DSL

Elasticsearch Query DSL with logical OR and AND conditions

我在 Elasticsearch 中有以下文档。

{
"id": "1234",
"color": "red"
}

{
"id": "1234",
"color": "burgundy"
}

{ "id": "4321",
  "color": "red"
}

{ "id": "1111",
  "color": "red"
}

{ "id": "2222",
   "color": "red"
}

{ "id": "3333",
   "color": "red"
}

{ "id": "4444",
   "color": "red"
}

{ "id": "5555",
  "color": "red"
}

{ "id": "6666",
  "color": "red"
}

我只想检索符合以下条件的文档。

我正在尝试准备一个查询 DSL,它将 return 只有 2 个文档(第一个和第三个)。我已经尝试了以下但它正在 returning 所有颜色为红色的文档并且它忽略了第一个条件。

{"query": 
    {"bool": 
        {"should": [
            {"term": {"id": "1234"}},
            {"term": {"id": "4321"}}
        ],      
        "filter": [
          {"term": {"color": "red"}}
        ]
        }
    }
}

有人可以帮忙吗?提前致谢。

{
    "query": {
        "bool": {
            "must": [
                {
                    "terms": {
                        "id": [
                            "1234",
                            "4321"
                        ]
                    }
                },
                {
                    "term": {
                        "color": "red"
                    }
                }
            ]
        }
    }
}