弹性搜索否定简单查询字符串中的短语和单词

Elastic search negate phrase and words in simple query string

我正在尝试使用简单查询字符串否定 Elastic Search 请求中的一些单词和短语。

我就是这样做的:

&q=-"the witcher 3"-game-novel

所以基本上,试图否定一个短语及其后面的单词。但这似乎不起作用。 如果我试图单独否定这些词,它就会起作用。 如何否定简单查询字符串中的短语和句子?

添加一个包含索引数据、搜索查询和搜索结果的工作示例。

索引数据:

{
    "name":"test"
}
{
    "name":"game"
}
{
    "name":"the witcher"
}
{
    "name":"the witcher 3"
}
{
    "name":"the"
}

搜索查询:

{
  "query": {
    "simple_query_string" : {
        "query": "-(game | novel) -(the witcher 3)",
        "fields": ["name"],
        "default_operator": "and"
    }
  }
}

搜索结果:

"hits": [
      {
        "_index": "stof_64133051",
        "_type": "_doc",
        "_id": "4",
        "_score": 2.0,
        "_source": {
          "name": "the"
        }
      },
      {
        "_index": "stof_64133051",
        "_type": "_doc",
        "_id": "3",
        "_score": 2.0,
        "_source": {
          "name": "the witcher"
        }
      },
      {
        "_index": "stof_64133051",
        "_type": "_doc",
        "_id": "1",
        "_score": 2.0,
        "_source": {
          "name": "test"
        }
      }
    ]