Elasticsearch из Ingest Pipelines Функция позволяет предварительно обработать данные перед вводом в индекс.。Он обеспечивает способ преобразования данных в процессе индексации.、Усиливать、Фильтрация и другие операцииизмеханизм,Подходит для обработки структурированных и неструктурированных данных.。Ingest Pipelines Отлично подходит для записи данных Elasticsearch Его можно очистить, отформатировать и улучшить без необходимости реализации этой логики обработки в клиентском коде.
1. Pipeline:Конвейер определяет последовательность процессоров(processors),Эти процессоры последовательно выполняют операции над документом.。Каждый обработчик может вносить изменения в документ.、Добавить поле、Удаление полей и другие операции.
2. Processor:Процессор находится в стадии разработки.изосновной блок,Каждый процессор имеет определенные функции. Например,Он может преобразовывать данные(как строка для числа)、дата анализа、Извлечь поля и т. д. Процессор Ingest Pipelines Логика выполнения Самая маленькая единица.
3. Execution:Когда вы отправляете документ в Elasticsearch , если Конвейер, эти документы будут последовательно обработаны в процессоре, а затем записаны в целевой индекс.
• Очистка данных:Удалить ненужное из исходных данныхиз Поле или форматированные данные,Приведите его в соответствие со стандартизированным форматом.
• Улучшение поля:Извлекайте дополнительную информацию из существующих полей и создавайте новые.из Поле。Например,Геолокация или IP-адрес. Информация об адресе может быть извлечена из записей журнала.
• преобразование формата:Воля Полеизпреобразование form — это другой формат, например преобразование строки в дату или числовое значение.
• Обработка и модификация данных:Измените данные перед их записью в индекс.,Например, заменить символы из в поле, применить логику обработки скрипта и т.д.
Сначала определите конвейер и используйте скрипт для обработки данных.
PUT /_ingest/pipeline/my_pipeline
{
"description": "Process data before indexing",
"processors": [
{
"script": {
"source": """
// Предположим, мы имеем дело с из – полем 'user', и хочу использовать имя с заглавной буквы
if (ctx.user != null) {
ctx.user.name = ctx.user.name.toUpperCase();
}
"""
}
}
]
}
В этом примере мы создаем Трубопровод, Pipeline проверю документацию user поле и будет user.name Преобразование в верхний регистр перед записью в индекс.
При записи данных в индекс используйте только что созданный конвейер:
POST /my_index/_doc/1?pipeline=my_pipeline
{
"user": {
"name": "John",
"age": 30
}
}
Благодаря этой операции Elasticsearch обработает данные через my_pipeline перед записью их в индекс my_index, и, наконец, имя пользователя будет преобразовано в «JOHN».
Запрос документов:
GET /my_index/_doc/1
Возвращаемый результат:
{
"_source": {
"user": {
"name": "JOHN", // Имена преобразуются в верхний регистр
"age": 30
}
}
}