我想使用多必须查询但我得到以下错误。 重复键“必须”语法错误。 结果应该是芬达和可乐。 我怎样才能得到这个数据?
必须如下结果: 1:可口可乐 2:芬达
{
"query": {
"bool": {
"must": [
{
"match": {
"productName":"Coca Cola"
}
},
{
"match": {
"productCode": "Coke"
}
},
{
"match": {
"created_date": "2018-06-10"
}
}
],
"must": [
{
"match": {
"productName":"Fanta"
}
},
{
"match": {
"productCode": "Coke"
}
},
{
"match": {
"created_date": "2018-06-05"
}
}
]
}
}
}
在mysql中:
SELECT * FROM products WHERE(name ='Coca Cola'和code ='Coke'...)或(name ='Fanta'...)
答案 0 :(得分:3)
您需要将must
(即AND)包装在should
(即OR)中,如下所示:
{
"query": {
"bool": {
"should": [
{
"bool": {
"must": [
{
"match": {
"productName": "Coca Cola"
}
},
{
"match": {
"productCode": "Coke"
}
},
{
"match": {
"created_date": "2018-06-10"
}
}
]
}
},
{
"bool": {
"must": [
{
"match": {
"productName": "Fanta"
}
},
{
"match": {
"productCode": "Coke"
}
},
{
"match": {
"created_date": "2018-06-05"
}
}
]
}
}
]
}
}
}