Elasticsearch,嵌套对象的存在过滤器不起作用
Elasticsearch, Exists filter for nested objects not working
我的映射是:
"properties": {
"user": {
"type": "nested",
"properties": {
"id": {
"type": "integer"
},
"is_active": {
"type": "boolean",
"null_value": false
},
"username": {
"type": "string"
}
}
},
我想获取所有没有 user
字段的文档。
我试过了:
GET /index/type/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "user"
}
}
]
}
}
}
其中returns所有文件。
基于,我也尝试过:
GET /index/type/_search
{
"query": {
"nested": {
"path": "user",
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "user"
}
}
]
}
}
}
}
}
其中 returns 0 个文档。
获取缺少 user
字段的所有文档的正确查询是什么?
尝试使用用户的父级,这里 obj
GET users/users/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "obj.user"
}
}
]
}
}
}
我找到了正确的语法,应该是:
GET /index/type/_search
{
"query": {
"bool": {
"must_not": [
{
"nested": {
"path": "user",
"query": {
"exists": {
"field": "user"
}
}
}
}
]
}
}
}
我的映射是:
"properties": {
"user": {
"type": "nested",
"properties": {
"id": {
"type": "integer"
},
"is_active": {
"type": "boolean",
"null_value": false
},
"username": {
"type": "string"
}
}
},
我想获取所有没有 user
字段的文档。
我试过了:
GET /index/type/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "user"
}
}
]
}
}
}
其中returns所有文件。
基于
GET /index/type/_search
{
"query": {
"nested": {
"path": "user",
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "user"
}
}
]
}
}
}
}
}
其中 returns 0 个文档。
获取缺少 user
字段的所有文档的正确查询是什么?
尝试使用用户的父级,这里 obj
GET users/users/_search
{
"query": {
"bool": {
"must_not": [
{
"exists": {
"field": "obj.user"
}
}
]
}
}
}
我找到了正确的语法,应该是:
GET /index/type/_search
{
"query": {
"bool": {
"must_not": [
{
"nested": {
"path": "user",
"query": {
"exists": {
"field": "user"
}
}
}
}
]
}
}
}