ElasticSearch7.6學習日記之ElasticSearch入門:分析與彙總結果

分析與彙總結果

Elasticsearch聚合使您能夠獲取有關搜索結果的元信息,並回答諸如“德克薩斯州有多少個帳戶持有人”之類的問題。或“田納西州的平均帳戶餘額是多少?” 您可以在一個請求中搜索文檔,過濾命中並使用匯總分析結果。

例如,以下請求使用terms彙總將bank索引中的所有帳戶按狀態分組,並按降序返回帳戶數量最多的十個州:

GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword"
      }
    }
  }
}

buckets在相應中是state字段的值。該 doc_count顯示的是每個州帳戶數量。例如,您可以看到ID(愛達荷州)有27個帳戶。因爲請求中設置size=0,所以響應僅包含聚合結果。

{
  "took": 29,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "skipped" : 0,
    "failed": 0
  },
  "hits" : {
     "total" : {
        "value": 1000,
        "relation": "eq"
     },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "group_by_state" : {
      "doc_count_error_upper_bound": 20,
      "sum_other_doc_count": 770,
      "buckets" : [ {
        "key" : "ID",
        "doc_count" : 27
      }, {
        "key" : "TX",
        "doc_count" : 27
      }, {
        "key" : "AL",
        "doc_count" : 25
      }, {
        "key" : "MD",
        "doc_count" : 25
      }, {
        "key" : "TN",
        "doc_count" : 23
      }, {
        "key" : "MA",
        "doc_count" : 21
      }, {
        "key" : "NC",
        "doc_count" : 21
      }, {
        "key" : "ND",
        "doc_count" : 21
      }, {
        "key" : "ME",
        "doc_count" : 20
      }, {
        "key" : "MO",
        "doc_count" : 20
      } ]
    }
  }
}

您可以組合聚合以構建更復雜的數據彙總。例如,以下請求將avg聚合嵌套在先前的 group_by_state聚合中,以計算每個狀態的平均帳戶餘額。

GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword"
      },
      "aggs": {
        "average_balance": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}

您可以通過指定terms聚合內的順序來使用嵌套聚合的結果進行排序,而不是按計數對結果進行排序:

GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "order": {
          "average_balance": "desc"
        }
      },
      "aggs": {
        "average_balance": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}

除了這些基本的存儲桶和指標聚合外,Elasticsearch還提供了專門的聚合,用於在多個字段上操作並分析特定類型的數據,例如日期,IP地址和地理數據。您還可以將單個聚合的結果反饋到管道聚合中,以進行進一步分析。

聚合提供的核心分析功能可啓用高級功能,例如使用機器學習來檢測異常。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章