首页 > 解决方案 > ES 7 - 使用匹配查询和过滤器

问题描述

我使用 ElasticSearch 7.0,我有这个简单的查询:

"bool": {
    "must": {
        "match": {
            "title": {
                "query": "engineer"
            }
        }
    },
    "filter": {
        "0": {
            "term": {
                "type_id": 1
            }
        },
        "term": {
            "active": 1
        }
    }
}

我得到这个错误:

[匹配] 格式错误的查询,应为 [END_OBJECT],但找到了 [FIELD_NAME]

我试过 :

"must": {
    "match": {
        "title": "engineer"
    }
},

但是同样的错误,我在这里看不到我的语法错误?我有相同的查询使用具有相同过滤器的多重匹配。

标签: elasticsearch

解决方案


您的过滤器必须包含在一个数组中,如下所示:

{
  "bool": {
    "must": {
      "match": {
        "title": {
          "query": "engineer"
        }
      }
    },
    "filter": [
      {
        "term": {
          "type_id": 1
        }
      },
      {
        "term": {
          "active": 1
        }
      }
    ]
  }
}

推荐阅读