Elasticsearch 术语过滤器提高 "filter does not support [mediatest]"

Elasticsearch the terms filter raise "filter does not support [mediatest]"

我的查询是这样的:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "online": 1
              }
            },
            {
              "terms": {
                "mediaType": "flash"
              }
            }
          ]
        }
      }
    }
  }
}

它引发 QueryParsingException [[comos_v2] [terms] 过滤器不支持 [mediaType]],of该字段 "mediaType" 完全不存在于映射中。 我的问题是为什么术语过滤器不会引发异常?

以上不是有效的查询 DSL。在上面 Terms filter 中 "mediaType" 字段的值应该是一个数组

应该是这样的:

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "term": {
                "online": 1
              }
            },
            {
              "terms": {
                "mediaType": ["flash"]
              }
            }
          ]
        }
      }
    }
  }
}

这只是“术语”与“术语”的问题。很容易错过它的复数/单数方面。

我在这个查询中遇到了一个非常相似的错误,我在其中试图删除一个特定的区域:

'{"query":{"terms":{"zoneid":25070}}}'

我在 运行 上述查询时遇到错误。

一旦将“terms”更改为“term”,查询就会顺利执行,如下所示:

'{"query":{"term":{"zoneid":25070}}}'

现在是 2021 年,我使用 .keyword 进行精确文本匹配,但您也可以轻松省略:

{"query":
  {"bool":
    {"must":
      [
        {"term":
          {"variable1.keyword":var1Here}
        },
        {"term":
          {"variable2.keyword":var2Here}
        }
      ]
    }
  }
}