好的想法是十分钱一打,真正无价的是能够实现这些想法的人。

复杂检索,复杂聚合,带数量限制

Elasticsearch | 作者 meowCoder123 | 发布于2021年09月01日 | 阅读数:1845

商品编号(no)  商品类型(type) 所属用户(user)
002 A aaa
003 A aaa
004 B aaa
005 B aaa
006 B aaa
007 C aaa
008 C aaa
009 A bbb
010 B bbb
011 C bbb
012 C bbb
013 A ccc
014 A ccc
015 B ccc
016 C ccc
017 C ddd
018 C ddd
019 A eee
020 A eee

描述:
如何通过查询查找出拥有两个A类型的,一个B类型的,一个c类型的商品的两个用户(这两个用户必须都拥有两个A,一个B和一个C)
 
es版本:7.6.1
 
 
目前我已经做到了如下部分:


{
"size": 0,
"aggs": {
"user": {
"terms": {
"field": "user",
"size": 2
},
"aggs": {
"A": {
"filter": {
"bool": {
"must": {
"terms": {
"type": [ "A" ]
}
}
}
}
},
"B": {
"filter": {
"bool": {
"must": {
"terms": {
"type": [ "B" ]
}
}
}
}
}
}
}
}
}

 
已邀请:

kirito - 专注es

赞同来自:

根据user/type聚合后,用代码判断是否符合条件呢
 
(直接聚合可能需要用到脚本,比较复杂,尝试了一下没写出来,等大神)

要回复问题请先登录注册