前言
日志,指标类型的数据使用场景中,随着时间的推移,数据的价值会逐渐降低,如果一直保留详细数据,会导致存储成本增长。 针对这个问题,Elasticsearch 提供了 rollup 机制,这允许我们只选择需要的字段,经过聚合后存储到新的索引中,以此来节省数据存储的成本。
操作步骤
通过如下步骤,即可使用以及了解 rollup 功能
- 步骤一:导入测试数据
- 步骤二:创建 Rollup 作业并查看相关信息
- 步骤三:查询新索引的数据
步骤一:导入测试数据
进入到 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/ 如果您有其他问题,欢迎您联系火山引擎技术支持服务