我是 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
值或一个[]
(空列表)值。你们能给我解释一下吗:
null
和[]
有什么区别?acl.roles=null
和acl.roles=[]
的文档的数量?如果是这样,这两个查询之间有什么区别?我尝试执行如下查询,但我真的不明白 Elasticsearch 如何处理这些东西??GET dummy/_count
{
"query": {
"bool": {
"must_not": {
"exists": {
"field": "acl.roles"
}
}
}
}
}
如果我理解有误,请为我指出,我真的很感激。
谢谢你们!!!