我正在修改我的问题,使其更加通用,所以请幽默我......
假设我有一个Elasticsearch索引,每个文档都包含一个教科书中的单词。有没有办法可以说出一次只发生了多少个单词,两次发生了多少次等等?
即结果是这样的:
# words occurring once = 10,001,
twice = 503,
thrice = 807,
four times = 997,
five times = 23
有弹性的方法吗?
我不是在寻找“给我最顶层的”x“最常出现的词” - 这可以通过聚合来轻松检索。
谢谢!
答案 0 :(得分:0)
假设您的文档中包含一个字段单词,其中包含教科书中的单词。您的用例将通过使用 terms aggregations 分组来解决,该分组会将所有出现的单词分组到一个存储桶中。因此您的查询将是这样的:
{
"aggs" : {
"word_count" : {
"terms" : { "field" : "word" }
}
}
}
使用以下输出:
{
"aggregations" : {
"word_count" : {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets" : [
{
"key" : "The",
"doc_count" : 10
},
{
"key" : "wild",
"doc_count" : 2
},
{
"key" : "fox",
"doc_count" : 3
},
]
}
}
}
其中doc_count表示每个单词的出现次数。