商品编号(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
 
 
目前我已经做到了如下部分:
 
															
																				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" ]
                        }
                    }
                }
            }
        }
      }
    }
  }
}
 
	
1 个回复
kirito - 专注es
赞同来自:
(直接聚合可能需要用到脚本,比较复杂,尝试了一下没写出来,等大神)