我有以下文档结构:
[
{
"email": "a@a.com",
"event": "delivered",
},
{
"email": "a@a.com",
"event": "opened",
},
{
"email": "a@a.com",
"event": "clicked",
},
{
"email": "b@b.com",
"event": "delivered",
},
{
"email": "c@c.com",
"event": "delivered",
},
{
"email": "c@c.com",
"event": "opened",
}
]
我想查询已发送但未打开但未点击的电子邮件地址。
是否有一个查询解决方案,或者我可以执行此应用程序端逻辑?
答案 0 :(得分:0)
使用以下查询将列表映射到nested
{
"mappings": {
"documet_type": {
"properties": {
"list": {
"type": "nested",
"properties": {
"email": {
"type": "text"
},
"event": {
"type": "text"
}
}
}
}
}
}
}
查询
{
"query": {
"nested": {
"path": "list",
"query": {
"term": {
"list.event": {
"value": "delivered"
}
}
},
"inner_hits": {}
}
}
}
Innerhits会返回包含已发送事件的所有事件的列表。