ElasticSearch字词+字词+热门匹配

时间:2020-05-20 08:24:57

标签: elasticsearch

我的索引约为540万个文档,其中重复的文档ID具有更新的值和更新的时间戳。因此,同一文档中存在许多具有更新值和更新时间的文件。

我已经完成了一项术语+热门歌曲汇总,以获取每个文档的最新更新值和时间戳:

{
    "track_total_hits": true,
    "size": 0,
    "aggs": { 
        "group": {
            "terms": {
                "field": "documentId.keyword" 
            },
            "aggs": {
                "latest": {
                    "top_hits": {
                        "sort": [
                            {
                                "updateDateTime": {
                                    "order": "desc"
                                }
                            }
                        ],

                        "size" : 1
                    }
                }
            }
        }
    }
}

当我在其上添加另一个汇总时,它给了我文档的总数,而忽略了上面的汇总。

{ 
    "track_total_hits": true,
    "size": 0,
    "aggs": {
        "value_count": {
            "terms": {
                "field": "value.keyword",
                "size": 200000
            },
            "aggs": { 
                "group": {
                    "terms": {
                        "field": "documentId.keyword",
                    },
                    "aggs": {
                        "latest": {
                            "top_hits": {
                                "sort": [
                                    {
                                        "updateDateTime": {
                                            "order": "desc"
                                        }
                                    }
                                ],

                                "size" : 1
                            }
                        }
                    }
                }
            }
        }
    }
}

我该如何对上面的代码进行汇总,以仅通过每个文档的最新值而不是所有文档的值来计数值?

最终结果将是这样的:

  • 值1:300
  • 值2:400

计数仅考虑每个文档的最新版本,即计数中没有重复的documentId。

谢谢。

0 个答案:

没有答案