bool 格式错误的查询,应为 END_OBJECT,但找到了 FIELD_NAME

mor*_*ari 0 elasticsearch

我的弹性搜索查询有一些问题。当我使用查询代码时,它会反馈消息 [bool] 格式错误的查询,预期为 [END_OBJECT],但找到了 [FIELD_NAME]。

{  
   "from":0,
   "size":15,
   "query":{  
      "bool":{  
         "must":[  
            {  
               "multi_match":{  
                  "query":"books",
                  "fields":[  
                     "title^20",
                     "lead^10",
                     "content"
                  ],
                  "type":"phrase"
               }
            }
         ]
      },
      "must":{  
         "match":{  
            "groupid":"599e4b49239cfa0a5a5f189d"
         }
      }
   },
   "sort":[  
      {  
         "times":{  
            "order":"desc"
         }
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

Val*_*Val 5

您的第二个must子句位置不正确,它必须位于现有bool/must查询内。您需要将查询重写为:

{  
   "from":0,
   "size":15,
   "query":{  
      "bool":{  
         "must":[  
            {  
               "multi_match":{  
                  "query":"books",
                  "fields":[  
                     "title^20",
                     "lead^10",
                     "content"
                  ],
                  "type":"phrase"
               }
            },
            {  
               "match":{  
                  "groupid": "599e4b49239cfa0a5a5f189d"
               }
            }
         ]
      }
   },
   "sort":[  
      {  
         "times":{  
            "order":"desc"
         }
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)