通常在elasticsearch中使用query_string查询,我可以这样做:
name:"Fred"
我想找到名称不等于Fred的所有文件。那个正确的语法是什么?我试过了:
name!="Fred"
虽然它会返回0个文件。
答案 0 :(得分:44)
你应该使用bool查询和must_not语句
{
"query": {
"bool" : {
"must_not" : {
"term" : {
"name" : "Fred"
}
}
}
}
}
答案 1 :(得分:41)
答案 2 :(得分:4)
您还可以结合使用must和must_not。就像名称为Ajit且状态未排队的pull docs。
$ find . -name '*.txt' | xargs rename 's/^/my-/'
$ git add .
答案 3 :(得分: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" }
}
}
}
}
}