例如,我有2个类型的文档,例如
{
"field2":"xx",
"field1","x"
}
{
"field1","x"
}
一个具有2个字段(
field1
和field2
),另一个仅具有1个字段(field1
)。现在,我想查询所有没有
field2
字段的文档?EIDT
dsl:
{
"query": {
"bool": {
"filter": [
{
"exists": {
"field": "LableToMember"
}
}
]
}
}
}
doc:
{
"LableToMember": [
{
"xxx": "xxx",
"id": "1"
}
],
"field2":"xxx"
}
LableToMember
是一个嵌套字段。我发现exists
api不能用于嵌套字段?
最佳答案
请注意,在ES 5.x中, missing
query has been removed支持exists
1。
因此,如果要向前兼容,则最好使用以下命令:
POST /_search
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "field2"
}
}
}
}
}
更新
如果要检索所有没有
field2
或具有给定值的field2
的文档,则可以这样操作:POST /_search
{
"query": {
"bool": {
"minimum_should_match": 1,
"should": [
{
"bool": {
"must_not": {
"exists": {
"field": "field2"
}
}
}
},
{
"term": {
"field2": "somevalue"
}
}
]
}
}
}
关于elasticsearch - 获取所有不包含 key 的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397530/