【发布时间】:2015-12-24 19:42:07
【问题描述】:
我在 Elasticsearch 中有一个相当大的数据集:1 个索引,一种类型的大约 1.2 亿条记录。我正在处理一组给定主题的大量段落。主题的数量是有限的,并且与唯一的 ID 相关联。每个段落都有几个由sentence_id 标识的句子(在所有主题中都是唯一的)。每个句子都有多个单词,每个单词可以出现多次。所以我的mapping 如下所示:
{
"sentence_id": 1200,
"topic_id": 2,
"value": "ground",
"occurrences": 20
}
现在,我想运行一个查询来回答这个问题: “查找给定主题 ID 按出现次数排序的最热门单词。”
因此,对于主题中的每个单词,我必须 sum up 它在所有句子中出现,sort 它们并返回。
我无法做到这一点。我尝试写aggregation term query,但它不会对出现次数求和,而只会返回每个单词的唯一记录数。
{
"query": {
"term": {
"topic_id": {
"value": 3117
}
}
},
"aggs": {
"total_occurrences": {
"terms": {
"field": "occurrences",
"size": 1000
}
}
}
}
谁能帮帮我?
【问题讨论】:
标签: elasticsearch aggregation querydsl elastic-stack