ロールアップインデックス機能APIを取得

8.11.0で非推奨。

ロールアップは将来のバージョンで削除されます。代わりにダウンサンプリングを使用してください。

ロールアップデータが保存されているインデックス(例:ロールアップインデックス)内のすべてのジョブのロールアップ機能を返します。

リクエスト

GET <target>/_rollup/data

前提条件

  • Elasticsearchのセキュリティ機能が有効になっている場合、ロールアップ結果を保存するインデックスに対して、readview_index_metadata、またはmanageのいずれかのindex privilegeを持っている必要があります。詳細については、セキュリティ特権を参照してください。

説明

単一のロールアップインデックスは、複数のロールアップジョブのデータを保存でき、これらのジョブに応じてさまざまな機能を持つことがあります。

このAPIを使用すると、次のことを確認できます:

  • 1. インデックス(またはパターンで指定されたインデックス)に保存されているジョブは何ですか?
  • 2. どのターゲットインデックスがロールアップされ、どのフィールドがそのロールアップに使用され、各ジョブでどの集約が実行できるか?

パスパラメータ

  • <target>
  • (必須、文字列)ロールアップ機能を確認するためのデータストリームまたはインデックス。ワイルドカード(*)式がサポートされています。

  1. #### Python
  2. ``````python
  3. resp = client.rollup.put_job(
  4. id="sensor",
  5. index_pattern="sensor-*",
  6. rollup_index="sensor_rollup",
  7. cron="*/30 * * * * ?",
  8. page_size=1000,
  9. groups={
  10. "date_histogram": {
  11. "field": "timestamp",
  12. "fixed_interval": "1h",
  13. "delay": "7d"
  14. },
  15. "terms": {
  16. "fields": [
  17. "node"
  18. ]
  19. }
  20. },
  21. metrics=[
  22. {
  23. "field": "temperature",
  24. "metrics": [
  25. "min",
  26. "max",
  27. "sum"
  28. ]
  29. },
  30. {
  31. "field": "voltage",
  32. "metrics": [
  33. "avg"
  34. ]
  35. }
  36. ],
  37. )
  38. print(resp)
  39. `

Js

  1. const response = await client.rollup.putJob({
  2. id: "sensor",
  3. index_pattern: "sensor-*",
  4. rollup_index: "sensor_rollup",
  5. cron: "*/30 * * * * ?",
  6. page_size: 1000,
  7. groups: {
  8. date_histogram: {
  9. field: "timestamp",
  10. fixed_interval: "1h",
  11. delay: "7d",
  12. },
  13. terms: {
  14. fields: ["node"],
  15. },
  16. },
  17. metrics: [
  18. {
  19. field: "temperature",
  20. metrics: ["min", "max", "sum"],
  21. },
  22. {
  23. field: "voltage",
  24. metrics: ["avg"],
  25. },
  26. ],
  27. });
  28. console.log(response);

コンソール

  1. PUT _rollup/job/sensor
  2. {
  3. "index_pattern": "sensor-*",
  4. "rollup_index": "sensor_rollup",
  5. "cron": "*/30 * * * * ?",
  6. "page_size": 1000,
  7. "groups": {
  8. "date_histogram": {
  9. "field": "timestamp",
  10. "fixed_interval": "1h",
  11. "delay": "7d"
  12. },
  13. "terms": {
  14. "fields": [ "node" ]
  15. }
  16. },
  17. "metrics": [
  18. {
  19. "field": "temperature",
  20. "metrics": [ "min", "max", "sum" ]
  21. },
  22. {
  23. "field": "voltage",
  24. "metrics": [ "avg" ]
  25. }
  26. ]
  27. }

後日、sensor_rollupインデックスに保存されているジョブと機能を確認したい場合は、ロールアップインデックスAPIを使用できます:

Python

  1. resp = client.rollup.get_rollup_index_caps(
  2. index="sensor_rollup",
  3. )
  4. print(resp)

Ruby

  1. response = client.rollup.get_rollup_index_caps(
  2. index: 'sensor_rollup'
  3. )
  4. puts response

Js

  1. const response = await client.rollup.getRollupIndexCaps({
  2. index: "sensor_rollup",
  3. });
  4. console.log(response);

コンソール

  1. GET /sensor_rollup/_rollup/data

URLの最初の部分として具体的なロールアップインデックス名(sensor_rollup)をリクエストしていることに注意してください。これにより、次のレスポンスが得られます:

コンソール-結果

  1. {
  2. "sensor_rollup" : {
  3. "rollup_jobs" : [
  4. {
  5. "job_id" : "sensor",
  6. "rollup_index" : "sensor_rollup",
  7. "index_pattern" : "sensor-*",
  8. "fields" : {
  9. "node" : [
  10. {
  11. "agg" : "terms"
  12. }
  13. ],
  14. "temperature" : [
  15. {
  16. "agg" : "min"
  17. },
  18. {
  19. "agg" : "max"
  20. },
  21. {
  22. "agg" : "sum"
  23. }
  24. ],
  25. "timestamp" : [
  26. {
  27. "agg" : "date_histogram",
  28. "time_zone" : "UTC",
  29. "fixed_interval" : "1h",
  30. "delay": "7d"
  31. }
  32. ],
  33. "voltage" : [
  34. {
  35. "agg" : "avg"
  36. }
  37. ]
  38. }
  39. }
  40. ]
  41. }
  42. }

返されるレスポンスには、元のロールアップ設定に似た情報が含まれていますが、異なる形式で表示されます。まず、いくつかの管理詳細があります:ロールアップジョブID、ロールアップデータを保持するインデックス、ジョブがターゲットにしていたインデックスパターン。

次に、ロールアップ検索に適格なデータを含むフィールドのリストが表示されます。ここでは、nodetemperaturetimestampvoltageの4つのフィールドが表示されます。これらのフィールドには、可能な集約がリストされています。たとえば、temperatureフィールドに対しては最小、最大、または合計の集約を使用できますが、timestampに対してはdate_histogramのみが使用できます。

  1. インデックスと対話する他のAPIと同様に、明示的なインデックスの代わりにインデックスパターンを指定できます:
  2. #### Python
  3. ``````python
  4. resp = client.rollup.get_rollup_index_caps(
  5. index="*_rollup",
  6. )
  7. print(resp)
  8. `

Ruby

  1. response = client.rollup.get_rollup_index_caps(
  2. index: '*_rollup'
  3. )
  4. puts response

Js

  1. const response = await client.rollup.getRollupIndexCaps({
  2. index: "*_rollup",
  3. });
  4. console.log(response);

コンソール

  1. GET /*_rollup/_rollup/data