elasticsearch 错误或缺少查询
elasticsearch false or missing query
如何组合 OR 以便查询错误或缺失的字段?
文档提到使用 must_not。这不起作用:
query = bool: must: [
{ 'bool':
'or': [
{ 'term': 'badField': false }
{ 'term': 'badField': '' }
{ 'must_not': 'exists': 'field': 'badField' }
]
should: [
{ 'term': 'goodField': true }
] }
]
正如@Val 所指出的,您的查询看起来像是查询 DSL 和伪代码的组合。对你的用例的正确查询应该是这样的:
{
"query": {
"bool": {
"should": [
{
"term": {
"goodField": {
"value": true
}
}
}
],
"must": [
{
"bool": {
"should": [
{
"bool": {
"must_not": [
{
"exists": {
"field": "badField"
}
}
]
}
},
{
"term": {
"badField": {
"value": false
}
}
}
]
}
}
]
}
}
}
如何组合 OR 以便查询错误或缺失的字段?
文档提到使用 must_not。这不起作用:
query = bool: must: [
{ 'bool':
'or': [
{ 'term': 'badField': false }
{ 'term': 'badField': '' }
{ 'must_not': 'exists': 'field': 'badField' }
]
should: [
{ 'term': 'goodField': true }
] }
]
正如@Val 所指出的,您的查询看起来像是查询 DSL 和伪代码的组合。对你的用例的正确查询应该是这样的:
{
"query": {
"bool": {
"should": [
{
"term": {
"goodField": {
"value": true
}
}
}
],
"must": [
{
"bool": {
"should": [
{
"bool": {
"must_not": [
{
"exists": {
"field": "badField"
}
}
]
}
},
{
"term": {
"badField": {
"value": false
}
}
}
]
}
}
]
}
}
}