我是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...
答案 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"
}
}