我有一个查询语句,需要能匹配的领域- name
,summary
或description
上或完全匹配name
字段。
现在,我又多了一个新领域brand
。此字段中的匹配应仅用于提高结果。这意味着如果仅在该brand
字段中有匹配项,则该文档不应出现在结果集中。
为了解决没有brand
我有以下查询:
query: {
bool: {
minimum_should_match: 1,
should: [
multi_match:{
query : "Cadbury chocklate milk",
fields : [name, summary, description]
},
term: {
name_keyword: {
value: "Cadbury chocklate milk"
}
}
]
}
}
这对我来说很好用。
我如何使用相同的查询获取数据,但提升具有 的文档brand:cadbury
,而不增加召回集(匹配基于brand:cadbury
)。
谢谢!
使用bool
内部必须should
为您工作。
multi_match
有多种类型,对于短语,您必须使用type:phrase
.
{
"query": {
"bool": {
"must": [
{ "bool" :
{ "should" : [ {
"multi_match" :{
"type" : "phrase",
"query" : "Cadbury chocklate milk",
"fields" : ["name", "summary", "description"]
} }, {
"term": {
"name_keyword": {
"value": "Cadbury chocklate milk"
} }
}
]
}
}
],
"should" : {
"term" : {
"brand" : {
"value" : "cadbury"
}
}
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句