2017-08-21 82 views
0

我想使用多必须查询,但我得到以下错误。 重复键“必须”语法错误。 结果应该是fanta和可乐。 如何获取这些数据?ES多个必须查询

必须如以下结果: 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产品WHERE(名称= '可口可乐' 和码='可乐” ...)或(NAME = '芬达' ...)

回答

2

你需要用一个should(即或两者must(即AND))是这样的:

{ 
    "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" 
       } 
       } 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 
+0

谢谢瓦尔:)你是超人:)) – ercvs

+0

很高兴帮助! – Val

相关问题