Процессор для индексации по дате
Цель этого процессора — назначить документам правильный временной индекс на основе поля даты или временного отметки в документе, используя поддержку даты математических выражений для имен индексов.
Процессор устанавливает поле метаданных _index с выражением даты математических выражений для имени индекса на основе заданного префикса имени индекса, поля даты или временной отметки в обрабатываемых документах и заданного округления даты.
Сначала этот процессор извлекает дату или временную отметку из поля обрабатываемого документа. При необходимости можно настроить форматирование даты, определяющее, как значение поля должно быть преобразовано в дату. Затем эта дата, заданный префикс имени индекса и заданное округление даты преобразуются в выражение даты математических выражений для имени индекса. Также здесь можно указать форматирование даты, определяющее, как дата должна быть отформатирована в выражение даты математических выражений для имени индекса.
Пример конвейера, который указывает документам месячный индекс, начинающийся с префикса my-index-, на основе даты в поле date1:
resp = client.ingest.put_pipeline(
id="monthlyindex",
description="monthly date-time index naming",
processors=[
{
"date_index_name": {
"field": "date1",
"index_name_prefix": "my-index-",
"date_rounding": "M"
}
}
],
)
print(resp) response = client.ingest.put_pipeline(
id: 'monthlyindex',
body: {
description: 'monthly date-time index naming',
processors: [
{
date_index_name: {
field: 'date1',
index_name_prefix: 'my-index-',
date_rounding: 'M'
}
}
]
}
)
puts response const response = await client.ingest.putPipeline({
id: "monthlyindex",
description: "monthly date-time index naming",
processors: [
{
date_index_name: {
field: "date1",
index_name_prefix: "my-index-",
date_rounding: "M",
},
},
],
});
console.log(response); PUT _ingest/pipeline/monthlyindex
{
"description": "monthly date-time index naming",
"processors" : [
{
"date_index_name" : {
"field" : "date1",
"index_name_prefix" : "my-index-",
"date_rounding" : "M"
}
}
]
} Использование этого конвейера для запроса индекса:
resp = client.index(
index="my-index",
id="1",
pipeline="monthlyindex",
document={
"date1": "2016-04-25T12:02:01.789Z"
},
)
print(resp) response = client.index(
index: 'my-index',
id: 1,
pipeline: 'monthlyindex',
body: {
"date1": '2016-04-25T12:02:01.789Z'
}
)
puts response const response = await client.index({
index: "my-index",
id: 1,
pipeline: "monthlyindex",
document: {
date1: "2016-04-25T12:02:01.789Z",
},
});
console.log(response); PUT /my-index/_doc/1?pipeline=monthlyindex
{
"date1" : "2016-04-25T12:02:01.789Z"
} {
"_index" : "my-index-2016-04-01",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 1,
"failed" : 0
},
"_seq_no" : 55,
"_primary_term" : 1
} Вышеуказанный запрос не будет индексировать этот документ в индекс my-index, а в индекс my-index-2016-04-01, потому что он был округлен по месяцам. Это связано с тем, что процессор date-index-name изменяет свойство _index документа.
Чтобы увидеть значение даты-математики предоставленного индекса в фактическом запросе индекса, который привел к индексированию документа в my-index-2016-04-01, мы можем проверить результаты процессора с помощью симуляции запроса.
resp = client.ingest.simulate(
pipeline={
"description": "monthly date-time index naming",
"processors": [
{
"date_index_name": {
"field": "date1",
"index_name_prefix": "my-index-",
"date_rounding": "M"
}
}
]
},
docs=[
{
"_source": {
"date1": "2016-04-25T12:02:01.789Z"
}
}
],
)
print(resp) response = client.ingest.simulate(
body: {
pipeline: {
description: 'monthly date-time index naming',
processors: [
{
date_index_name: {
field: 'date1',
index_name_prefix: 'my-index-',
date_rounding: 'M'
}
}
]
},
docs: [
{
_source: {
"date1": '2016-04-25T12:02:01.789Z'
}
}
]
}
)
puts response const response = await client.ingest.simulate({
pipeline: {
description: "monthly date-time index naming",
processors: [
{
date_index_name: {
field: "date1",
index_name_prefix: "my-index-",
date_rounding: "M",
},
},
],
},
docs: [
{
_source: {
date1: "2016-04-25T12:02:01.789Z",
},
},
],
});
console.log(response); POST _ingest/pipeline/_simulate
{
"pipeline" :
{
"description": "monthly date-time index naming",
"processors" : [
{
"date_index_name" : {
"field" : "date1",
"index_name_prefix" : "my-index-",
"date_rounding" : "M"
}
}
]
},
"docs": [
{
"_source": {
"date1": "2016-04-25T12:02:01.789Z"
}
}
]
} и результат:
{
"docs" : [
{
"doc" : {
"_id" : "_id",
"_index" : "<my-index-{2016-04-25||/M{yyyy-MM-dd|UTC}}>",
"_version" : "-3",
"_source" : {
"date1" : "2016-04-25T12:02:01.789Z"
},
"_ingest" : {
"timestamp" : "2016-11-08T19:43:03.850+0000"
}
}
}
]
} Приведенный выше пример показывает, что _index было установлено в значение <my-index-{2016-04-25||/M{yyyy-MM-dd|UTC}}>. Elasticsearch понимает это как 2016-04-01, как объяснено в документации по именам индексов с датой математических выражений
Таблица 12. Параметры имени индекса по дате
| Имя | Обязательно | По умолчанию | Описание |
|---|---|---|---|
| да | - | Поле для извлечения даты или временной отметки. |
| нет | - | Префикс имени индекса, добавляемый перед датой. Поддерживает фрагменты шаблонов. |
| да | - | Способ округления даты при форматировании даты в имя индекса. Допустимые значения: |
| нет | yyyy-MM-dd'T'HH:mm:ss.SSSXX | Массив ожидаемых форматов даты для парсинга дат/временных отметок в обрабатываемом документе. Может быть шаблоном Java Time или одним из следующих форматов: ISO8601, UNIX, UNIX_MS или TAI64N. |
| нет | UTC | Часовой пояс, используемый при парсинге даты и при разрешении выражений в конкретные имена индексов в поддержке даты математических выражений. |
| нет | ENGLISH | Язык, используемый при парсинге даты из обрабатываемого документа, актуален при парсинге названий месяцев или дней недели. |
| нет | yyyy-MM-dd | Формат, используемый при выводе разобранной даты в имя индекса. Ожидается корректный шаблон Java Time. Поддерживает фрагменты шаблонов. |
| нет | - | Описание процессора. Полезно для описания цели процессора или его конфигурации. |
| нет | - | Условное выполнение процессора. Смотрите Условное выполнение процессора. |
| нет |
| Игнорировать ошибки для процессора. Смотрите Обработка ошибок конвейера. |
| нет | - | Обработка ошибок для процессора. Смотрите Обработка ошибок конвейера. |
| нет | - | Идентификатор процессора. Полезен для отладки и метрик. |
© 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/date-index-name-processor.html