预览数据馈送 API编辑

预览数据馈送。

请求编辑

GET _ml/datafeeds/<datafeed_id>/_preview

POST _ml/datafeeds/<datafeed_id>/_preview

GET _ml/datafeeds/_preview

POST _ml/datafeeds/_preview

先决条件编辑

需要以下权限

  • 集群:manage_mlmachine_learning_admin 内置角色授予此权限)
  • 数据馈送中配置的源索引:read

描述编辑

预览数据馈送 API 返回数据馈送中搜索结果的第一个“页面”。您可以预览现有数据馈送,或在 API 中提供数据馈送和异常检测作业的配置详细信息。预览显示将传递到异常检测引擎的数据结构。

启用 Elasticsearch 安全功能后,将使用调用预览数据馈送 API 的用户的凭据预览数据馈送查询。数据馈送启动后,它将使用创建或更新它的最后一个用户的角色运行查询。如果两组角色不同,则预览可能无法准确反映数据馈送启动后将返回的内容。为避免此类问题,创建或更新数据馈送的同一用户应预览它,以确保它返回预期的数据。或者,使用 辅助授权标头 提供凭据。

路径参数编辑

<datafeed_id>

(可选,字符串)唯一标识数据馈送的数字字符字符串。此标识符可以包含小写字母数字字符(a-z 和 0-9)、连字符和下划线。它必须以字母数字字符开头和结尾。

如果您将 <datafeed_id> 作为路径参数提供,则不能在请求正文中提供数据馈送或异常检测作业配置详细信息。

查询参数编辑

end

(可选,字符串)数据馈送预览应结束的时间。预览可能不会到达提供值的末尾,因为只返回第一页结果。可以使用以下格式之一指定时间

  • 带毫秒的 ISO 8601 格式,例如 2017-01-22T06:00:00.000Z
  • 不带毫秒的 ISO 8601 格式,例如 2017-01-22T06:00:00+00:00
  • 自纪元以来的毫秒数,例如 1485061200000

使用任一 ISO 8601 格式的日期时间参数必须具有时区指示符,其中 Z 被接受为 UTC 时间的缩写。

当需要 URL 时(例如,在浏览器中),时区指示符中使用的 + 必须编码为 %2B

此值为独占值。

start
(可选,字符串)数据馈送预览应开始的时间,可以使用与 end 参数相同的格式指定。此值为包含值。

如果您没有提供 startend 参数,则数据馈送预览将在整个数据时间内进行搜索,但不包括 coldfrozen 数据层 中的数据。

请求正文编辑

datafeed_config
(可选,对象)要预览的数据馈送定义。有关有效定义,请参阅 创建数据馈送 API
job_config
(可选,对象)与数据馈送关联的异常检测作业的配置详细信息。如果 datafeed_config 对象不包含引用现有异常检测作业的 job_id,则必须提供此 job_config 对象。如果您同时包含 job_idjob_config,则使用后者信息。除非您还提供 datafeed_config 对象,否则不能指定 job_config 对象。有关有效定义,请参阅 创建异常检测作业 API

示例编辑

这是一个提供现有数据馈送 ID 的示例

response = client.ml.preview_datafeed(
  datafeed_id: 'datafeed-high_sum_total_sales'
)
puts response
GET _ml/datafeeds/datafeed-high_sum_total_sales/_preview

此示例返回的数据如下

[
  {
    "order_date" : 1574294659000,
    "category.keyword" : "Men's Clothing",
    "customer_full_name.keyword" : "Sultan Al Benson",
    "taxful_total_price" : 35.96875
  },
  {
    "order_date" : 1574294918000,
    "category.keyword" : [
      "Women's Accessories",
      "Women's Clothing"
    ],
    "customer_full_name.keyword" : "Pia Webb",
    "taxful_total_price" : 83.0
  },
  {
    "order_date" : 1574295782000,
    "category.keyword" : [
      "Women's Accessories",
      "Women's Shoes"
    ],
    "customer_full_name.keyword" : "Brigitte Graham",
    "taxful_total_price" : 72.0
  }
]

以下示例在 API 中提供数据馈送和异常检测作业配置详细信息

response = client.ml.preview_datafeed(
  body: {
    datafeed_config: {
      indices: [
        'kibana_sample_data_ecommerce'
      ],
      query: {
        bool: {
          filter: [
            {
              term: {
                _index: 'kibana_sample_data_ecommerce'
              }
            }
          ]
        }
      },
      scroll_size: 1000
    },
    job_config: {
      description: 'Find customers spending an unusually high amount in an hour',
      analysis_config: {
        bucket_span: '1h',
        detectors: [
          {
            detector_description: 'High total sales',
            function: 'high_sum',
            field_name: 'taxful_total_price',
            over_field_name: 'customer_full_name.keyword'
          }
        ],
        influencers: [
          'customer_full_name.keyword',
          'category.keyword'
        ]
      },
      analysis_limits: {
        model_memory_limit: '10mb'
      },
      data_description: {
        time_field: 'order_date',
        time_format: 'epoch_ms'
      }
    }
  }
)
puts response
POST _ml/datafeeds/_preview
{
  "datafeed_config": {
    "indices" : [
      "kibana_sample_data_ecommerce"
    ],
    "query" : {
      "bool" : {
        "filter" : [
          {
            "term" : {
              "_index" : "kibana_sample_data_ecommerce"
            }
          }
        ]
      }
    },
    "scroll_size" : 1000
  },
  "job_config": {
    "description" : "Find customers spending an unusually high amount in an hour",
    "analysis_config" : {
      "bucket_span" : "1h",
      "detectors" : [
        {
          "detector_description" : "High total sales",
          "function" : "high_sum",
          "field_name" : "taxful_total_price",
          "over_field_name" : "customer_full_name.keyword"
        }
      ],
      "influencers" : [
        "customer_full_name.keyword",
        "category.keyword"
      ]
    },
    "analysis_limits" : {
      "model_memory_limit" : "10mb"
    },
    "data_description" : {
      "time_field" : "order_date",
      "time_format" : "epoch_ms"
    }
  }
}

此示例返回的数据如下

[
  {
    "order_date" : 1574294659000,
    "category.keyword" : "Men's Clothing",
    "customer_full_name.keyword" : "Sultan Al Benson",
    "taxful_total_price" : 35.96875
  },
  {
    "order_date" : 1574294918000,
    "category.keyword" : [
      "Women's Accessories",
      "Women's Clothing"
    ],
    "customer_full_name.keyword" : "Pia Webb",
    "taxful_total_price" : 83.0
  },
  {
    "order_date" : 1574295782000,
    "category.keyword" : [
      "Women's Accessories",
      "Women's Shoes"
    ],
    "customer_full_name.keyword" : "Brigitte Graham",
    "taxful_total_price" : 72.0
  }
]