API предварительного просмотра каналов данных
Предварительно просматривает канал данных.
Запрос
GET _ml/datafeeds/<datafeed_id>/_preview
POST _ml/datafeeds/<datafeed_id>/_preview
GET _ml/datafeeds/_preview
POST _ml/datafeeds/_preview
Предварительные условия
Требуются следующие привилегии:
- cluster:
manage_ml(рольmachine_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.Это значение является исключительным.
- Формат ISO 8601 с миллисекундами, например
-
start - (Необязательно, строка) Время, с которого должен начаться предварительный просмотр канала данных, которое можно указать, используя те же форматы, что и параметр
end. Это значение является включительным.
Если вы не предоставляете ни параметр start, ни параметр end, предварительный просмотр канала данных будет осуществлять поиск в течение всего времени данных, но исключит данные в пределах cold или frozen уровней данных.
Тело запроса
-
datafeed_config - (Необязательно, объект) Определение канала данных для предварительного просмотра. Для допустимых определений см. API создания каналов данных.
-
job_config - (Необязательно, объект) Сведения о конфигурации задачи обнаружения аномалий, связанной с каналом данных. Если объект
datafeed_configне содержитjob_id, который ссылается на существующую задачу обнаружения аномалий, вы должны предоставить этот объектjob_config. Если вы включаете как объектjob_id, так и объектjob_config, используется последняя информация. Вы не можете указать объектjob_config, если не предоставите также объектdatafeed_config. Для допустимых определений см. API создания задач обнаружения аномалий.
Примеры
Это пример предоставления идентификатора существующего канала данных:
resp = client.ml.preview_datafeed(
datafeed_id="datafeed-high_sum_total_sales",
)
print(resp) response = client.ml.preview_datafeed( datafeed_id: 'datafeed-high_sum_total_sales' ) puts response
const response = await client.ml.previewDatafeed({
datafeed_id: "datafeed-high_sum_total_sales",
});
console.log(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:
resp = client.ml.preview_datafeed(
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"
}
},
)
print(resp) 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 const response = await client.ml.previewDatafeed({
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",
},
},
});
console.log(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
}
]
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/ml-preview-datafeed.html