ElasticSearch - 仅查询非空的特定数组元素

时间:2013-03-10 19:44:18

标签: elasticsearch

我是ES的新手,很难在查询dsl上找到非常好的参考资料或教程。

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

有人可以帮忙吗?此外,如果您可以指向某个地址的参考或教程或食谱来解决这样的问题,那么也将非常感激。

"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...

1 个答案:

答案 0 :(得分: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"
    }
 }