[elasticsearch笔记]Rolling up historical data

note

  • this functionality is experimental
  • 时间相关性的数据随着时间的推移,其实时可访问的诉求会逐步降低,直到基本没有访问诉求
  • 所以超过一定时间的数据 rolling up 到低成本的存储设备/存储方案,是很有必要的
  • /_rollup_search 和 /_search 可接收的 Query DSL 一样,只是支持功能上有些限制
  • 支持 live data 和 rolled data 搜索结果 merge。当 live 和 rolled 都有数据时,选择 live 数据,提高准确性。/_rollup_search 搜索的结果就会包含live data,不需要特别处理
  • 在设计 _rollup 任务时,要考虑未来如何使用数据,如果做数据聚合。根据未来诉求,设计 _rollup。否则很多类型或者字段的搜索、聚合、聚合的力度会不支持

demo

DELETE sensor*

PUT sensor-info
{
  "mappings": {
    "properties": {
      "node": {
        "type": "keyword"
      },
      "temperature": {
        "type": "long"
      },
      "timestamp": {
        "type": "date"
      },
      "voltage": {
        "type": "float"
      }
    }
  }
}

PUT sensor-info/_doc/1
{
  "timestamp": 1516729294000,
  "temperature": 200,
  "voltage": 5.2,
  "node": "a"
}

PUT sensor-product
{
  "mappings": {
    "properties": {
      "title": {
        "type": "keyword"
      },
      "price": {
        "type": "long"
      },
      "timestamp": {
        "type": "date"
      }
    }
  }
}

PUT sensor-product/_doc/1
{
  "timestamp": 1516729294000,
  "price": 123,
  "title": "Foo"
}

POST _rollup/job/sensor/_stop
DELETE _rollup/job/sensor
PUT _rollup/job/sensor
{
  "index_pattern": "sensor-*",
  "rollup_index": "sensor_rollup1",
  "cron": "*/30 * * * * ?",
  "page_size": 1000,
  "groups": {
    "date_histogram": {
      "field": "timestamp",
      "fixed_interval": "60m"
    },
    "terms": {
      "fields": [
        "node"
      ]
    }
  },
  "metrics": [
    {
      "field": "temperature",
      "metrics": [
        "min",
        "max",
        "sum"
      ]
    },
    {
      "field": "voltage",
      "metrics": [
        "avg"
      ]
    }
  ]
}

DELETE _rollup/job/combined
PUT _rollup/job/combined
{
    "index_pattern": "sensor-*",
    "rollup_index": "sensor_rollup2",
    "cron": "*/30 * * * * ?",
    "page_size" :1000,
    "groups" : {
      "date_histogram": {
        "field": "timestamp",
        "fixed_interval": "1h",
        "delay": "7d"
      },
      "terms": {
        "fields": ["node", "title"]
      }
    },
    "metrics": [
        {
            "field": "temperature",
            "metrics": ["min", "max", "sum"]
        },
        {
            "field": "price",
            "metrics": ["avg"]
        }
    ]
}

POST _rollup/job/sensor/_start
POST _rollup/job/combined/_start

GET /sensor_rollup1/_rollup_search
{
  "size": 0,
  "aggregations": {
    "max_temperature": {
      "max": {
        "field": "temperature"
      }
    }
  }
}

GET /sensor_rollup2/_rollup_search
{
  "size": 0,
  "aggregations": {
    "min_temperature": {
      "min": {
        "field": "temperature"
      }
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值