API получения возможностей индекса rollup
Устарело в версии 8.11.0.
Rollups будут удалены в будущей версии. Используйте downsampling вместо этого.
Возвращает возможности rollup для всех задач внутри индекса rollup (например, индекса, где хранятся данные rollup).
Запрос
GET <target>/_rollup/data
Предварительные условия
- Если включены функции безопасности Elasticsearch, у вас должны быть любые из
read,view_index_metadataилиmanageразрешений на доступ к индексу для индекса, хранящего результаты rollup. Дополнительную информацию см. в разделе Разрешения безопасности.
Описание
Один индекс rollup может хранить данные для нескольких задач rollup и может иметь различные возможности, в зависимости от этих задач.
Этот API позволит вам определить:
- Какие задачи хранятся в индексе (или индексах, указанных с помощью шаблона)?
- Какие целевые индексы были объединены, какие поля использовались в этих объединениях и какие агрегации могут быть выполнены для каждой задачи?
Параметры пути
-
<target> - (Обязательно, строка) Поток данных или индекс, для проверки возможностей rollup. Поддерживаются выражения с подстановкой (
*).
Примеры
Представьте, что у нас есть индекс, названный sensor-1, заполненный исходными данными. Мы знаем, что данные будут расти со временем, поэтому будет sensor-2, sensor-3 и так далее. Давайте создадим задачу rollup, которая сохраняет свои данные в sensor_rollup:
resp = client.rollup.put_job(
id="sensor",
index_pattern="sensor-*",
rollup_index="sensor_rollup",
cron="*/30 * * * * ?",
page_size=1000,
groups={
"date_histogram": {
"field": "timestamp",
"fixed_interval": "1h",
"delay": "7d"
},
"terms": {
"fields": [
"node"
]
}
},
metrics=[
{
"field": "temperature",
"metrics": [
"min",
"max",
"sum"
]
},
{
"field": "voltage",
"metrics": [
"avg"
]
}
],
)
print(resp) const response = await client.rollup.putJob({
id: "sensor",
index_pattern: "sensor-*",
rollup_index: "sensor_rollup",
cron: "*/30 * * * * ?",
page_size: 1000,
groups: {
date_histogram: {
field: "timestamp",
fixed_interval: "1h",
delay: "7d",
},
terms: {
fields: ["node"],
},
},
metrics: [
{
field: "temperature",
metrics: ["min", "max", "sum"],
},
{
field: "voltage",
metrics: ["avg"],
},
],
});
console.log(response); PUT _rollup/job/sensor
{
"index_pattern": "sensor-*",
"rollup_index": "sensor_rollup",
"cron": "*/30 * * * * ?",
"page_size": 1000,
"groups": {
"date_histogram": {
"field": "timestamp",
"fixed_interval": "1h",
"delay": "7d"
},
"terms": {
"fields": [ "node" ]
}
},
"metrics": [
{
"field": "temperature",
"metrics": [ "min", "max", "sum" ]
},
{
"field": "voltage",
"metrics": [ "avg" ]
}
]
} Если в будущем мы захотим определить, какие задачи и возможности были сохранены в индексе sensor_rollup, мы можем использовать API получения информации об индексе rollup:
resp = client.rollup.get_rollup_index_caps(
index="sensor_rollup",
)
print(resp) response = client.rollup.get_rollup_index_caps( index: 'sensor_rollup' ) puts response
const response = await client.rollup.getRollupIndexCaps({
index: "sensor_rollup",
});
console.log(response); GET /sensor_rollup/_rollup/data
Обратите внимание, как мы запрашиваем конкретное имя индекса rollup (sensor_rollup) как первую часть URL. Это приведет к следующему ответу:
{
"sensor_rollup" : {
"rollup_jobs" : [
{
"job_id" : "sensor",
"rollup_index" : "sensor_rollup",
"index_pattern" : "sensor-*",
"fields" : {
"node" : [
{
"agg" : "terms"
}
],
"temperature" : [
{
"agg" : "min"
},
{
"agg" : "max"
},
{
"agg" : "sum"
}
],
"timestamp" : [
{
"agg" : "date_histogram",
"time_zone" : "UTC",
"fixed_interval" : "1h",
"delay": "7d"
}
],
"voltage" : [
{
"agg" : "avg"
}
]
}
}
]
}
} Возвращаемый ответ содержит информацию, аналогичную исходной конфигурации rollup, но в другом формате. Сначала приведены некоторые служебные данные: идентификатор задачи rollup, индекс, содержащий объединённые данные, шаблон индекса, на который была нацелена задача.
Далее показан список полей, содержащих данные, подходящие для поиска rollup. Здесь мы видим четыре поля: node, temperature, timestamp и voltage. Каждое из этих полей перечисляет возможные агрегации. Например, вы можете использовать агрегацию min, max или sum для поля temperature, но только агрегацию date_histogram для timestamp.
Обратите внимание, что элемент rollup_jobs является массивом; может быть несколько независимых задач, настроенных для одного индекса или шаблона индекса. Каждая из этих задач может иметь разные конфигурации, поэтому API возвращает список всех доступных конфигураций.
Как и другие API, взаимодействующие с индексами, вы можете указать шаблоны индексов вместо явных индексов:
resp = client.rollup.get_rollup_index_caps(
index="*_rollup",
)
print(resp) response = client.rollup.get_rollup_index_caps( index: '*_rollup' ) puts response
const response = await client.rollup.getRollupIndexCaps({
index: "*_rollup",
});
console.log(response); GET /*_rollup/_rollup/data
© 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/rollup-get-rollup-index-caps.html