【发布时间】:2017-03-28 17:04:04
【问题描述】:
通常在 elasticsearch 中使用 query_string 查询,我可以这样做:
name:"Fred"
我想查找 name 不等于 Fred 的所有文档。什么是正确的语法?我试过了:
name!="Fred"
虽然它返回 0 个文档。
【问题讨论】:
标签: elasticsearch
通常在 elasticsearch 中使用 query_string 查询,我可以这样做:
name:"Fred"
我想查找 name 不等于 Fred 的所有文档。什么是正确的语法?我试过了:
name!="Fred"
虽然它返回 0 个文档。
【问题讨论】:
标签: elasticsearch
【讨论】:
NOT(key:value1 value2 value3)
你应该使用带有 must_not 语句的 bool 查询
{
"query": {
"bool" : {
"must_not" : {
"term" : {
"name" : "Fred"
}
}
}
}
}
【讨论】:
and,or and not 过滤器
***For "and" query:***
"filtered" : {
"query" : {
"term" : { "name.first" : "shay" }
},
"filter" : {
"and" : {
"filters" : [
{
"term" : { "name.first" : "something" }
},
{
"term" : { "name.first" : "other" }
}
]
}
}
}
***For "or" query:***
{
"filtered" : {
"query" : {
"term" : { "name.first" : "shay" }
},
"filter" : {
"or" : {
"filters" : [
{
"term" : { "name.first" : "something" }
},
{
"term" : { "name.first" : "other" }
}
]
}
}
}
}
***For "not" query:***
{
"filtered" : {
"query" : {
"term" : { "name.first" : "shay" }
},
"filter" : {
"not" : {
"filter" : {
"term" : { "name.first" : "someting" }
}
}
}
}
}
【讨论】:
您还可以使用 must 和 must_not 的组合。就像名称为 Ajit 且状态未排队的拉取文档一样。
{
"query": {
"bool": {
"must": [
{
"match": {
"name": "Ajit"
}
}
],
"must_not": [
{
"match": {
"status": "queued"
}
}
]
}
}
}
【讨论】: