首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索聚集和范围

弹性搜索聚集和范围
EN

Stack Overflow用户
提问于 2015-03-13 09:05:18
回答 1查看 164关注 0票数 0

我们想要聚合一些价值。例如,假设我们是在组织中注册的索引用户。

我们想让注册用户数分裂如下:

  • 从gmail注册: 900
  • 通过fb注册: 800
  • 通过雅虎注册: 700
  • 通过自己的申请注册: 1500
  • 通过他人注册: 1600

预期我们需要0到1000个用户(gmail,fb,Yahoo-3应用程序).And 1001到2000(自己的应用程序,其他应用程序).Need来像上面的场景那样抓取。

我们如何在弹性搜索中实现这一点?有什么建议吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-03-13 10:59:29

假设您正在为用户对象建立索引,如下所示:

代码语言:javascript
复制
POST users/user
{
  "login":"user1",
  "organization":"fb"
}

您正在尝试根据用户的organization值聚合用户。为此,您必须使用terms聚合。

您的查询如下:

代码语言:javascript
复制
POST users/_search?search_type=count
{
  "aggs": {
    "by_organization": {
      "terms": {
        "field": "organization"
      }
    }
  }
}

注意: search_type=count在这里只是为了得到更短的响应,因为结果点击不会被返回(参见http://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-type.html#count)。

您的搜索响应将类似于:

代码语言:javascript
复制
{
   (...)
   "aggregations": {
      "by_organization": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 0,
         "buckets": [
            {
               "key": "app",
               "doc_count": 4
            },
            {
               "key": "fb",
               "doc_count": 3
            },
            {
               "key": "gmail",
               "doc_count": 2
            }
         ]
      }
   }
}

您可以看到对应于每个组织值的桶。

请注意:

  • 默认情况下,只返回前10个桶(参见size聚合的terms参数)。
  • 此简单示例的工作原理是组织值很简单,但在现实生活中,您必须将组织字段设置为not_analyzed,以便在原始值(而不是通过分析获得的术语)上进行聚合。

我强烈邀请您阅读更多关于分析和terms聚合文档的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29028361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档