如何在 DSL 查询中放置 AND、NOT 条件

How to put AND, NOT condition in DSL query

query = {'from': 0, 'size': 30, 'query': {'bool': {'must': {'query_string': {'query': '*programmer* OR *tester*'}}}}}

如何获取包含 programmer and tester 而不是 manager

的文档

以下查询无效。

query = {'from': 0, 'size': 30, 'query': {'bool': {'must': {'query_string': {'query': '*programmer* AND *tester* NOT *manager*'}}}}}

Q2:我也弹出了很多结果,如何只显示结果 min_score > 5 ?

Q3: 如果我想用'programmer AND tester AND manager提取文档,如果三个字符串(programmer, tester,manager) 都存在那么只有如何提取?

可以使用must_not查询。这是一个示例查询:

{
  "from": 0,
  "size": 30,
  "query": {
    "bool": {
      "must": {
        "query_string": {
          "query": "*programmer* OR *tester*"
        }
      },
      "must_not": {
        "query_string": {
          "query": "*manager*"
        }
      }
    }
  }
}

这在没有 must_not 查询的情况下也应该有效:

(*programmer* OR *tester*) AND NOT *manager*