`"query": {
"function_score": {
"query": {
"bool": {
"must": [],
"should": [],
"filter": [
{
"terms": {
"category": "type-1",
"product": "product-A"
},
"terms": {
"category": "type-2",
"product": "product-B"
}
}
]
}
},
"functions": []
}
},`
我想像上面那样传递多重组合查询,应该是正确的查询格式
在sql中,我的查询将是
从以下产品中选择*,其中(类别='type1'和产品=产品-A)或(类别='type2'和产品=产品-B)或(类别='type3'和产品=产品-C)< / p>
我想复制以上查询
答案 0 :(得分:0)
如果要在布尔查询中创建OR
语句,则应该是嵌套的bool
查询,其中包含多个should
子句。
所以尝试:
{
"query": {
"function_score": {
"query": {
"bool": {
"must": [],
"should": [],
"filter": [
{
"bool": {
"should": [
{
"bool": {
"must": [
{
"term": {
"category": "type-1"
}
},
{
"term": {
"product": "product-A"
}
}
]
}
},
{
"bool": {
"must": [
{
"term": {
"category": "type-2"
}
},
{
"term": {
"product": "product-B"
}
}
]
}
}
]
}
}
]
}
}
}
},
"functions": []
}
,如果没有must
子句,则可以将filter子句移到主should
中,因为只有匹配至少一个子句的文档才匹配。