0

我对 ES 比较陌生,很难找到关于查询 dsl 的非常好的参考资料或教程。

我们有以下示例的文档类型。因此,我希望进行的查询是:“返回所有具有至少一个实体记录的 email_package 记录('entities' 数组中的一个记录)。” 是的,我想要完整的“电子邮件”记录。

有人可以帮忙吗?此外,如果您可以在某处指向解决此类问题的参考或教程或食谱,那也将不胜感激。

"email_package": {
                    "email": {
                        "date": "2007-02-13T18:24:22-04:00",
                        "subject": "this is the subject",
                        "body": "this is the body"
                    },
                    "entities": [
                        {
                            "Louisville": {
                                "City": "South"
                            }
                        },
                        {
                            "Memphis": {
                                "City": "South"
                            }
                        }
                    ]
               }
                // more 'email_package records follow...
4

1 回答 1

1

您的文档有点问题,因为您似乎在嵌套对象并给它们不同的名称。如果您不受当前结构的约束,我会将映射更改为更易于管理的内容,并且查询将是直截了当的,例如:

"email_package": {
    "email": {
        "body": "this is the body1", 
        "date": "2007-02-13T18:24:22-04:00", 
        "subject": "this is the subject"
    }, 
    "entities": [
        {
            "name": "Louisville"
            "City": "South", 
         }, 
        {
            "name": "Memphis"                 
            "City": "South", 
        }
    ]
}

询问:

{ "filter": {
    "exists": {
        "field": "email_package.entities.name"
    }
 }
于 2013-03-11T15:53:59.690 回答