我的Elastisearch查询出了什么问题?

时间:2019-03-25 10:52:08

标签: elasticsearch elasticsearch-6

我需要立即进行multi_match和bool查询,但是下面的查询不起作用:(当我使用它们separatley时,它们可以完美地工作。

{
  "query": {
    "multi_match": {
      "query": "kotlety*",
      "fields": [
        "name"
      ]
    },
    "bool": {
      "filter": {
        "term": {
          "status": 2
        }
      }
    }
  },
  "size": 24
}

响应为:

{
    "error": {
        "root_cause": [
            {
                "type": "parsing_exception",
                "reason": "[multi_match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
                "line": 9,
                "col": 5
            }
        ],
        "type": "parsing_exception",
        "reason": "[multi_match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
        "line": 9,
        "col": 5
    },
    "status": 400
}

弹性6.6,我认为我的查询语法可能不正确?

2 个答案:

答案 0 :(得分:2)

查询不能同时包含bool和multi_match。您可以这样重新排列:

{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "status": 2
        }
      },
      "should": {
        "multi_match": {
        "query": "kotlety*",
        "fields": [
          "name"
        ]
      }
    }
  }
  },
  "size": 24
}

答案 1 :(得分:1)

我更改了语法,此查询有效:

{
  "query": {
    "bool": {
      "must": {
        "multi_match": {
          "query": "kotlety*",
          "fields": [
            "name"
          ]
        }
      },
      "filter": {
        "term": {
          "status": 2
        }
      }
    }
  }
}