2017-11-29 2 views
1

Diese Abfrage, die ich in der elastischen Suche verwendet, um Datensätze zu filtern, die entweder eine Bedingung erfüllen oder andere Bedingungen nicht erfüllen.Verwendung von NOT und OR zusammen in der elastischen Suche

Das Problem ist, ich bin nicht in der Lage, eine entsprechende Syntax in Nodejs zu schreiben, um die Informationen zu extrahieren. Wir können es kaum must_not hier verwenden, da es eine ODER-Bedingung ist

Antwort

0

Sie werden beide Bedingungen in sollte Array machen, wie, wenn jemand übereinstimmt werden Sie die Aufzeichnung in Ergebnisse erhalten, werden Sie must match und must_not match

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "bool": { 
      "must_not": { 
       "match": { 
       "col1": { 
        "query": "val1", 
        "type": "phrase" 
       } 
       } 
      } 
      } 
     }, 
     { 
      "match": { 
      "col2": { 
       "query": "val2", 
       "type": "phrase" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
verwenden müssen
Verwandte Themen