我需要立即进行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,我认为我的查询语法可能不正确?
答案 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
}
}
}
}
}