筛选以获取嵌套文档的长度与数字匹配的文档 [英] filter to get documents where the length of a nested document matches a number

查看:50
本文介绍了筛选以获取嵌套文档的长度与数字匹配的文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个弹性搜索索引,其中包含一个嵌套的对象,称为 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆