通常在elasticsearch中使用query_string查询,我可以这样做:
name:"Fred"
Run Code Online (Sandbox Code Playgroud)
我想找到名字不等于Fred的所有文件.那个正确的语法是什么?我试过了:
name!="Fred"
Run Code Online (Sandbox Code Playgroud)
虽然它返回0个文件.
Vol*_*hat 52
您应该使用bool查询和must_not语句
{
"query": {
"bool" : {
"must_not" : {
"term" : {
"name" : "Fred"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Val*_*Val 50
您需要使用NOT运算符,如下所示:
!(name:"Fred")
Run Code Online (Sandbox Code Playgroud)
要么
NOT (name:"Fred")
Run Code Online (Sandbox Code Playgroud)
小智 8
您还可以结合使用must和must_not。就像名称为Ajit且状态未排队的pull docs。
"query": {
"bool": {
"must": [
{
"match": {
"name": "Ajit"
}
}
],
"must_not": [
{enter code here
"match": {
"status": "queued"
}
}
]
}
}
}```
Run Code Online (Sandbox Code Playgroud)
and、or 和 not 过滤器
对于“与”查询:
{
"filtered" : {
"query" : {
"term" : { "name.first" : "shay" }
},
"filter" : {
"and" : {
"filters" : [
{
"term" : { "name.first" : "something" }
},
{
"term" : { "name.first" : "other" }
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于“或”查询:
{
"filtered" : {
"query" : {
"term" : { "name.first" : "shay" }
},
"filter" : {
"or" : {
"filters" : [
{
"term" : { "name.first" : "something" }
},
{
"term" : { "name.first" : "other" }
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
对于“非”查询:
{
"filtered" : {
"query" : {
"term" : { "name.first" : "shay" }
},
"filter" : {
"not" : {
"filter" : {
"term" : { "name.first" : "someting" }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50636 次 |
| 最近记录: |