2016-11-14 9 views
7

elasticsearch में एक QUERY_STRING क्वेरी के साथ आमतौर पर, मैं कर सकते हैं:Elasticsearch क्वेरी स्ट्रिंग क्वेरी के बराबर नहीं है?

name:"Fred" 

मैं सभी दस्तावेजों जहां नाम फ्रेड के बराबर नहीं है खोजना चाहते हैं। इसके लिए उचित वाक्यविन्यास क्या है? मैंने कोशिश की:

name!="Fred" 

हालांकि यह 0 दस्तावेज़ लौटाता है।

उत्तर

13

आप NOT operator उपयोग करने की आवश्यकता इस तरह:

!(name:"Fred") 

या

NOT (name:"Fred") 
14

आप must_not बयान के साथ bool क्वेरी

{ 
    "query": { 
    "bool" : { 
     "must_not" : { 
     "term" : { 
      "name" : "Fred" 
     } 
     } 
    } 
    } 
} 
0

और, या और नहीं इस्तेमाल करना चाहिए फ़िल्टर

and: 

{ 
    "filtered" : { 
     "query" : { 
      "term" : { "name.first" : "shay" } 
     }, 
     "filter" : { 
      "and" : { 
       "filters" : [ 
        { 
         "term" : { "name.first" : "something" } 
        }, 
        { 
         "term" : { "name.first" : "other" } 
        } 
       ] 
      } 
     } 
    } 
} 
or: 

{ 
    "filtered" : { 
     "query" : { 
      "term" : { "name.first" : "shay" } 
     }, 
     "filter" : { 
      "or" : { 
       "filters" : [ 
        { 
         "term" : { "name.first" : "something" } 
        }, 
        { 
         "term" : { "name.first" : "other" } 
        } 
       ] 
      } 
     } 
    } 
} 
not: 

{ 
    "filtered" : { 
     "query" : { 
      "term" : { "name.first" : "shay" } 
     }, 
     "filter" : { 
      "not" : { 
       "filter" : { 
        "term" : { "name.first" : "someting" } 
       } 
      } 
     } 
    } 
} 
संबंधित मुद्दे