筛选以获取嵌套文档的长度与数字匹配的文档 [英] filter to get documents where the length of a nested document matches a number
问题描述
我有一个弹性搜索索引,其中包含一个嵌套的对象,称为 plateformes .它的子文档数量可以变化,如下所示:
I have an elastic search index that has a nested object called plateformes. The number of it sub-documents can vary, like this:
{
"action" : "clean",
"plateformes" : [
{
"plateforme" : "myplateforme1",
"status" : "failure"
},
{
"plateforme" : "myplateforme2",
"status" : "succes"
},
{
"plateforme" : "myplateforme3",
"status" : "succes"
}
]
},
{
"action" : "activate",
"plateformes" : [
{
"plateforme" : "myplateforme1",
"status" : "failure"
},
{
"plateforme" : "myplateforme2",
"status" : "succes"
}
]
},
{
"action" : "delete",
"plateformes" : [
{
"plateforme" : "myplateforme1",
"status" : "succes"
}
]
}
现在,我只想获取平台具有(例如)一个嵌套文档的文档.对于上面的示例,查询必须仅返回此文档:
Now, I want to get only the documents where plateformes has exactly (let's say) one nested documents. With the example above, the query must return only this document:
{
"action" : "delete",
"plateformes" : [
{
"plateforme" : "myplateforme1",
"status" : "succes"
}
]
}
有办法吗?
推荐答案
您可以在编制索引时添加另一个字段 plateformesCount
,其中您可以在其中存储文档 platformes
的数量包含.然后,只需将该字段与某个数字进行比较即可,即速度非常快.
You can add another field plateformesCount
at indexing time in which you store the number of platformes
your document contains. Then it's only a matter of comparing that field with some number, i.e. extremely fast.
{
"action" : "clean",
"plateformesCount": 3,
"plateformes" : [
{
"plateforme" : "myplateforme1",
"status" : "failure"
},
{
"plateforme" : "myplateforme2",
"status" : "succes"
},
{
"plateforme" : "myplateforme3",
"status" : "succes"
}
]
},
{
"action" : "activate",
"plateformesCount": 2,
"plateformes" : [
{
"plateforme" : "myplateforme1",
"status" : "failure"
},
{
"plateforme" : "myplateforme2",
"status" : "succes"
}
]
},
{
"action" : "delete",
"plateformesCount": 1,
"plateformes" : [
{
"plateforme" : "myplateforme1",
"status" : "succes"
}
]
}
这篇关于筛选以获取嵌套文档的长度与数字匹配的文档的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!