在弹性搜索的索引中查找唯一文档



我的索引中有重复的条目,我只想找出索引中的唯一文档。TopHits 聚合解决了这个问题,但我的另一个要求是支持对结果进行排序(跨存储桶)。因此,我不能使用热门聚合。
我能想到的其他选择是编写插件或使用无痛脚本。 需要帮助来解决这个问题。如果您可以将我重定向到一些示例,那就太好了。

Top hits聚合从完整的结果集中查找值,而如果使用cardinality则仅提供过滤的结果集。 您可以使用如下所示cardinality聚合:

{
"aggs" : {
"UNIQUE_COUNT" : {
"cardinality" : {
"field" : "your_field"
}
}
}
}

这种聚合伴随着一些责任,您可以在下面的 ElasticSearch 文档中找到它以更好地理解它。 链接:基数聚合

对于排序,您可以参考以下示例,您可以在其中按创建存储桶的terms顺序传递聚合:

{
"aggs": {
"AGG_NAME": {
"terms": {
"field": "you_field",
"size": 10,
"order": {
"UNIQUE_COUNT.doc_count": "asc"
},
"min_doc_count": 1
},
"aggs": {
"UNIQUE_COUNT": {
"cardinality": {
"field": "your_field"
}
}
}    
}
}
}

最新更新