<object id="xwuag"></object>
      1. <tbody id="xwuag"><pre id="xwuag"><video id="xwuag"></video></pre></tbody>
        <progress id="xwuag"></progress>

        <nav id="xwuag"><big id="xwuag"><rt id="xwuag"></rt></big></nav>
        <em id="xwuag"></em>

        <nav id="xwuag"></nav><rp id="xwuag"></rp>
        <li id="xwuag"></li>
      2. <rp id="xwuag"></rp>
        <s id="xwuag"></s><th id="xwuag"><pre id="xwuag"><video id="xwuag"></video></pre></th>
      3. <nav id="xwuag"><center id="xwuag"></center></nav>
          <dd id="xwuag"><big id="xwuag"></big></dd>

          分析编辑

          终于到了最后一个业务需求:支持管理者对雇员目录做分析。 Elasticsearch 有一个功能叫聚合(aggregations),允许我们基于数据生成一些精细的分析结果。聚合与 SQL 中的 GROUP BY 类似但更强大。

          举个例子,挖掘出雇员中最受欢迎的兴趣爱好:

          GET /megacorp/employee/_search
          {
            "aggs": {
              "all_interests": {
                "terms": { "field": "interests" }
              }
            }
          }

          暂时忽略掉语法,直接看看结果:

          {
             ...
             "hits": { ... },
             "aggregations": {
                "all_interests": {
                   "buckets": [
                      {
                         "key":       "music",
                         "doc_count": 2
                      },
                      {
                         "key":       "forestry",
                         "doc_count": 1
                      },
                      {
                         "key":       "sports",
                         "doc_count": 1
                      }
                   ]
                }
             }
          }

          可以看到,两位员工对音乐感兴趣,一位对林地感兴趣,一位对运动感兴趣。这些聚合并非预先统计,而是从匹配当前查询的文档中即时生成。如果想知道叫 Smith 的雇员中最受欢迎的兴趣爱好,可以直接添加适当的查询来组合查询:

          GET /megacorp/employee/_search
          {
            "query": {
              "match": {
                "last_name": "smith"
              }
            },
            "aggs": {
              "all_interests": {
                "terms": {
                  "field": "interests"
                }
              }
            }
          }

          all_interests 聚合已经变为只包含匹配查询的文档:

            ...
            "all_interests": {
               "buckets": [
                  {
                     "key": "music",
                     "doc_count": 2
                  },
                  {
                     "key": "sports",
                     "doc_count": 1
                  }
               ]
            }

          聚合还支持分级汇总 。比如,查询特定兴趣爱好员工的平均年龄:

          GET /megacorp/employee/_search
          {
              "aggs" : {
                  "all_interests" : {
                      "terms" : { "field" : "interests" },
                      "aggs" : {
                          "avg_age" : {
                              "avg" : { "field" : "age" }
                          }
                      }
                  }
              }
          }

          得到的聚合结果有点儿复杂,但理解起来还是很简单的:

            ...
            "all_interests": {
               "buckets": [
                  {
                     "key": "music",
                     "doc_count": 2,
                     "avg_age": {
                        "value": 28.5
                     }
                  },
                  {
                     "key": "forestry",
                     "doc_count": 1,
                     "avg_age": {
                        "value": 35
                     }
                  },
                  {
                     "key": "sports",
                     "doc_count": 1,
                     "avg_age": {
                        "value": 25
                     }
                  }
               ]
            }

          输出基本是第一次聚合的加强版。依然有一个兴趣及数量的列表,只不过每个兴趣都有了一个附加的 avg_age 属性,代表有这个兴趣爱好的所有员工的平均年龄。

          即使现在不太理解这些语法也没有关系,依然很容易了解到复杂聚合及分组通过 Elasticsearch 特性实现得很完美。可提取的数据类型毫无限制。

          備份地址:http://www.lvesu.com/blog/es/_analytics.html

          国产成人午夜福利r在线观看_欧美性受xxxx孕妇_白丝娇喘过膝袜爽短裙调教_jizz jizz xxxx