我是Elasticsearch的新手,我尝试做一些复杂的搜索,但我找不到如何做,或者即使它可能。
我使用Elasticsearch来存储文档。
所有此文档都有一个userId
字段,可能是多个文档中的相同。
它们还有一个包含字符串的documentType
字段。
我希望拥有一个至少有n
个DocumentType的userId的唯一计数。
目前,如果n = 1
我能够使用此请求检索唯一计数:
{
"aggs": {
"docType_file": {
"filters": {
"filters": {
"documentType:\"file\"": {
"query": {
"query_string": {
"query": "documentType:\"file\"",
}
}
}
}
},
"aggs": {
"unique_user": {
"cardinality": {
"field": "userId"
}
}
}
}
}
}
但如果我希望n
优于1(或者如果我想做其他操作,更少,相等或范围),我就找不到办法。我查看了不同的聚合,但我找不到如何将它们组合起来检索它。
是否可以在Elasticsearch中执行此操作? 任何建议都会很明显。
如有必要,我可以分享更多细节。
谢谢。
更新
我找到了另一种方法来进行查询,之后进行其他聚合可能会更有趣。
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "documentType:\"file\""
}
}
}
},
"aggs": {
"unique_user": {
"cardinality": {
"field": "userId",
"precision_threshold": 40000
}
}
}
}
但我仍然不知道如何过滤后,我认为我错误地解决了问题,但我没有看到任何其他解决方案。