如何使用Elasticsearch中的Index rollup功能

容器与中间件中间件技术服务知识库
前言

日志,指标类型的数据使用场景中,随着时间的推移,数据的价值会逐渐降低,如果一直保留详细数据,会导致存储成本增长。 针对这个问题,Elasticsearch 提供了 rollup 机制,这允许我们只选择需要的字段,经过聚合后存储到新的索引中,以此来节省数据存储的成本。

操作步骤

通过如下步骤,即可使用以及了解 rollup 功能

  1. 步骤一:导入测试数据
  2. 步骤二:创建 Rollup 作业并查看相关信息
  3. 步骤三:查询新索引的数据

步骤一:导入测试数据

进入到 Kibana 中,点击 Home 按钮,在页面中找到 Add data,在 Sample data 页面中选择 Sample eCommerce orders 示例数据并完成导入操作。

步骤二:创建 Rollup 作业并查看相关信息

您可以通过 Kibana UI 或者是 index rollup API 来创建 rollup 作业,这里演示 rollup API 的方式,在 Kibana Dev Tools 中运行如下语句:

PUT _opendistro/_rollup/jobs/rudonx_rollup
{
  "rollup": {
    "enabled": true,
    "schedule": {
      "interval": {
        "period": 1,
        "unit": "Minutes"
      }
    },
    "description": "An example policy that rolls up the sample ecommerce data",
    "source_index": "kibana_sample_data_ecommerce",
    "target_index": "rudonx_rollup_example",
    "page_size": 1000,
    "delay": 0,
    "continuous": false,
    "dimensions": [
      {
        "date_histogram": {
          "source_field": "order_date",
          "fixed_interval": "1m",
          "timezone": "America/Los_Angeles"
        }
      },
      {
        "terms": {
          "source_field": "customer_gender"
        }
      },
      {
        "terms": {
          "source_field": "geoip.city_name"
        }
      },
      {
        "terms": {
          "source_field": "geoip.region_name"
        }
      },
      {
        "terms": {
          "source_field": "day_of_week"
        }
      }
    ],
    "metrics": [
      {
        "source_field": "taxless_total_price",
        "metrics": [
          {
            "avg": {}
          },
          {
            "sum": {}
          },
          {
            "max": {}
          },
          {
            "min": {}
          },
          {
            "value_count": {}
          }
        ]
      },
      {
        "source_field": "total_quantity",
        "metrics": [
          {
            "avg": {}
          },
          {
            "max": {}
          }
        ]
      }
    ]
  }
}

在创建完成之后,在 Kibana 中的 Index Mangement 页面中,会有如下显示: 图片 上述的参数说明,您可以参考文档[1]。 接下来,点击我们创建的 rollup 作业,可以查看到此作业的具体信息,如图所示: 图片

步骤三:查询新索引的数据

可以使用 Dev Tools 来进行数据查询操作,如下所示:

POST rudonx_rollup_example/_search
{
  "size": 0,
  "query": {
    "bool": {
      "must": {"term": { "geoip.region_name": "Marrakech-Tensift-Al Haouz" } }
    }
  },
  "aggregations": {
    "daily_numbers": {
      "terms": {
        "field": "day_of_week"
      },
      "aggs": {
        "per_city": {
          "terms": {
            "field": "geoip.city_name"
          },
          "aggregations": {
            "average quantity": {
               "avg": {
                  "field": "total_quantity"
                }
              }
            }
          },
          "total_revenue": {
            "sum": {
              "field": "taxless_total_price"
          }
        }
      }
    }
  }
}
参考文档

[1] https://opendistro.github.io/for-elasticsearch-docs/docs/im/index-rollups/rollup-api/ 如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论