Elasticsearch:曾经发生过多少个单词

时间:2017-06-28 00:42:34

标签: elasticsearch

我正在修改我的问题,使其更加通用,所以请幽默我......

假设我有一个Elasticsearch索引,每个文档都包含一个教科书中的单词。有没有办法可以说出一次只发生了多少个单词,两次发生了多少次等等?

即结果是这样的:

# words occurring once       = 10,001, 
                  twice      = 503, 
                  thrice     = 807, 
                  four times = 997, 
                  five times = 23

有弹性的方法吗?

我不是在寻找“给我最顶层的”x“最常出现的词” - 这可以通过聚合来轻松检索。

谢谢!

1 个答案:

答案 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表示每个单词的出现次数。