处理 null 和 [](空列表)

问题描述 投票:0回答:0

我是 Elasticsearch 的新手,我对

null
[]
(空列表)值的处理有疑问。具体来说,在我的
dummy
索引示例中,我有一个文档如下

{
        "hits": [
            {
                "_index": "dummy",
                "_type": "_doc",
                "_id": "4c9bc4adbd5f572d708428f3df4dbf55",
                "_score": 17.805637,
                "_source": {
                    "id": 81863,
                    "created_at": "2022-06-14 10:23:31",
                    "updated_at": "2022-06-14 10:23:31",
                    "meta_data": "",
                    "acl": {
                        "species": null,
                        "roles": null,   <--- null value
                        "tools": null
                    },
                    "category": ""
                }
            }
        ]
    }
}

在这里,值得注意的是字段

acl.roles
null
。此外,在同一个索引中,还有另一个文件看起来像这样

{
        "hits": [
            {
                "_index": "dummy",
                "_type": "_doc",
                "_id": "10a0a66bf7b60ed28e1ced36bd59934a",
                "_score": 15.609104,
                "_source": {
                    "id": 65690,
                    "created_at": "2020-10-02 09:46:00",
                    "updated_at": "2020-10-02 09:46:00",
                    "meta_data": "a:0:{}",
                    "acl": {
                        "species": [],
                        "roles": [],    <--- empty list
                        "tools": []
                    },
                    "category": "PERSONAL"
                }
            }
        ]
    }
}

所以在

dummy
索引中,字段
acl.roles
可以有一个
null
值或一个
[]
(空列表)值。你们能给我解释一下吗:

  • Elasticsearch 中的
    null
    []
    有什么区别?
  • 是否可以统计带有
    acl.roles=null
    acl.roles=[]
    的文档的数量?如果是这样,这两个查询之间有什么区别?我尝试执行如下查询,但我真的不明白 Elasticsearch 如何处理这些东西??
GET dummy/_count
{
  "query": {
    "bool": {
      "must_not": {
        "exists": {
          "field": "acl.roles"
        }
      }
    }
  }
}

如果我理解有误,请为我指出,我真的很感激。

谢谢你们!!!

elasticsearch null nosql elasticsearch-query
© www.soinside.com 2019 - 2024. All rights reserved.