Elasticsearch - 基于计数和唯一性进行聚合和排序

时间:2016-01-25 17:57:10

标签: elasticsearch

我有一个问题我不知道如何解决。

想象一下,我有一些来自不同用户的推文,想知道哪些词对特定用户使用最多。为了使它更有趣,我喜欢通过所有推文(来自所有用户)的上下文中的单词的独特性来提高计数。

因此,假设一个用户总共发了四次“stackoverflow”这个词,并且“stackoverflow”只被该用户使用过。同一个用户也多次发布了“I”,“for”和“yes”这几个字(比如10),但这些字也被很多次其他用户的推文发送过。

我想找一个查询,将“stackoverflow”的计数/分数提高到高于计数/分数,比如说,“for”。

在这种情况下,elasticsearch类型将包含一个带有完整推文的字符串(“tweet”),一个未分析的数组,其中包含推文中使用的单词(“tweetedWords”)和用户名(“用户”)。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

找到合适的google-keyword("弹性搜索聚合频率")后,我找到了我要找的东西:significant_terms。

{
  "query" : {
    "terms": {"user": ["{user}"]}
  },
  "size": 0,
  "aggs": {
    "tweetedWords": {
      "significant_terms": {
        "field": "tweetedWords"
      }
    }
  }
}