繁体   English   中英

ElasticSearch一段时间内最常用的字词

[英]ElasticSearch most-frequent terms over time

我们正在研究技术选择,这些选择将使我们能够对数百万个文档进行最常见的术语查询。 我们对早期版本的ES经验很少,但绝不是专家。 通过阅读ES文档,我尚不清楚它是否可以做到这一点。

想象一下来自10,000个不同人群的数百万条推文的数据集。 我们希望执行以下操作:

对于10,000个高音扬声器中的每一个,在过去的一个小时,最后一天,去年,他们在Twitter上最常出现的前10个术语是什么?

同样且类似地,如果每个推文记录包含提到的主题标签的数组,则为最常见的主题标签计算相同的统计信息。

如果一种选择是仅在最终用户通过用户界面要求时按需进行这些计算,那么这也是一种选择。 我们只希望这些计算中的一小部分能够实际使用。

可以在ES上以有效的方式完成此操作吗? 您能否提供一个粗略的示例,以便我们知道如何相应地使用API​​? 谢谢

如果我正确理解您的要求,则希望获得用户的热门词汇

POST /tweets/tweet
{
"text": "We're researching technology",
"user": 1,
"hasttags": ["hastag", "hastag1"]

}

POST /tweets/tweet
{
"text": "We have a little experience with an older version of ES #hastag",
"user": 1,
"hasttags": ["hastag", "hastag2"]
}



POST /tweets/tweet
{
"text": "For each one of the 10,000 tweeters, what are the top-10 most #hastag",
"user": 2,
"hasttags": ["hastag", "hastag3"]
}


POST /tweets/_search
{
  "size": 0,
  "query": {
    "terms": {
      "user": [
        "1"
      ]
    }
  },
  "aggs": {
    "users": {
      "terms": {
        "field": "user",
        "size": 10
      },
      "aggs": {
        "terms": {
          "terms": {
            "field": "text",
            "size": 10
          }
        },
        "hasttags": {
          "terms": {
            "field": "hasttags",
            "size": 10
          }
        }
      }
    }
  }
}

这是示例,因为这里的问题是它仅限于10个用户,因为在ES 1.4中,没有办法进行聚合上的分页。 另外,您还可以将大小指定为10,000,但是您需要尝试查看它在实际数据和群集计算机上的工作方式,因为它将需要更多的内存。 我正在搜索引擎中建立最常用的搜索词,其中我将1000设置为聚合,并且效果非常好。

待办事项:寻找停用词以排除诸如“ a”,“ in”之类的术语

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM