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声明

{ 
    "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" } 
       } 
      } 
     } 
    } 
} 
関連する問題