我使用ES 7.1,我想使用多重匹配查询来从多个字段中获取结果,但是我想在特定字段上使用match_phrase来获取结果。
我尝试了很多事情,这是最接近我想要的版本:
'bool' : {
'must' : {
'multi_match' : {
'fields' => ['titre', 'subtitre', 'description'],
'query' => $query
},
'match_phrase' : {
'titre' => $query
}
},
'filters' : { // ... some filters }
}
我得到一个错误:
parsing_exception“,”原因“:” [multi_match]格式错误的查询,预期 [END_OBJECT]但找到了[FIELD_NAME]
是否有一种方法可以将两个条件组合在一起?我不想创建2个查询。
答案 0 :(得分:0)
当您需要多个must
子查询时,您只需要将子查询作为数组传递即可。此修改应该可以工作(转换为JSON):
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "hello",
"fields": ["name", "brand_name"]
}
},
{
"match_phrase": {
"title": "hello"
}
}
]
}
}
}