Еластичний пошук

Reindex Elasticsearch змінює тип поля

Reindex Elasticsearch змінює тип поля

Робота з базами даних дуже весела, але іноді може бути складною, особливо коли йдеться про вже існуючі дані.

Наприклад, якщо ви хочете змінити тип конкретного поля, може знадобитися зняти службу, що може мати серйозні наслідки, особливо в службах, які обробляють великі обсяги даних.

На щастя, ми можемо використовувати потужні функції Elasticsearch, такі як переіндексація, перенесення вузлів, конвеєрів та процесорів, щоб зробити такі завдання дуже простими.

Цей підручник покаже вам, як змінити тип поля в певному індексі на інший, використовуючи вузли Elasticsearch Ingest. Застосування цього підходу дозволить усунути простої, які впливають на послуги, і при цьому виконувати завдання зміни типу поля.

Вступ до Ingest Nodes

Вузол прийому Elasticsearch дозволяє попередньо обробити документи перед їх індексацією.

Вузол Elasticsearch - це конкретний примірник Elasticsearch; підключені вузли (більше одного) складають єдиний кластер.

Ви можете переглянути запити на доступні вузли у запущеному кластері:

ОТРИМАТИ / _nodes /

Команда cURL для цього:

curl -XGET “http: // localhost: 9200 / _nodes /”

Виконання цієї команди повинно дати вам велику інформацію про вузли, як показано нижче (усічений вихід):


"_nodes":
"всього": 3,
"успішно": 3,
"не вдалося": 0
,
"ім'я кластера": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"вузли":
"gSlMjTKyTemoOX-EO7Em4w":
"name": "екземпляр-0000000003",
"transport_address": "172.28.86.133: 19925 ",
"host": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"версія": "7.10.2 ",
"build_flavor": "за замовчуванням",
"build_type": "docker",
"build_hash": "747e1cc71def077253878a59143c1f785afa92b9",
"total_indexing_buffer": 214748364,
"ролі": [
"дані",
"data_cold",
"data_content",
"data_hot",
"data_warm",
"проковтнути",
"господар",
"віддалений_кластер_клієнт",
“Перетворити”
],
"атрибути":
"logic_availability_zone": "зона-0",
"ім'я_сервера": "екземпляр-0000000003.22e0bee6ef91461d82d9b0f1b4b13b4a ",
"availability_zone": "us-west-1c",
"xpack.встановлено ":" true ",
"instance_configuration": "aws.даних.highio.i3 ",
"перетворити.вузол ":" true ",
"region": "us-west-1"
,
"налаштування":
"s3":
"клієнт":
"еластичний-внутрішній-22e0be":
"кінцева точка": "s3-us-west-1.amazonaws.ком "


,
--------------------------------вихід усічений---------------------

За замовчуванням усі вузли Elasticsearch увімкнюють ingest і здатні обробляти операції ingest. Однак для важких операцій поглинання можна створити єдиний вузол, призначений лише для проковтування.

Щоб обробити pre_process, перед індексуванням документів нам потрібно визначити конвеєр, який визначає серію препроцесорів.

Препроцесори - це набори інструкцій, що обертаються навколо трубопроводу і виконуються по одному.

Далі наведено загальний синтаксис того, як визначити конвеєр:


"description": "Перетворити мене",
"процесори": [
"конвертувати":
"field": "id",
"type": "ціле число"
]

Властивість опису говорить про те, чого повинен досягти конвеєр. Наступним параметром є препроцесори, передані як список у порядку їх виконання.

Створіть перетворювальний трубопровід

Щоб створити конвеєр, який ми будемо використовувати для перетворення типу, використовуйте запит PUT із кінцевою точкою API _ingest як:

PUT _ingest / pipeline / convert_pipeline

“Description”: “перетворює поле dayOfWeek у довге з цілого числа”,
"процесори": [

"конвертувати":
"field": "dayOfWeek",
"type": "довгий"


]

Для cURL використовуйте команду:

curl -XPUT "http: // localhost: 9200 / _ingest / pipeline / convert_pipeline" -H 'Content-Type: application / json' -d '"description": "перетворює поле dayOfWeek у довге з цілого числа", " процесори ": [" convert ": " field ":" dayOfWeek "," type ":" long "] '

Переіндексування та перетворення Тип

Після того, як у нас є конвеєр у вузлі прийому, все, що нам потрібно зробити, це викликати API індексації та передати конвеєр як аргумент у делі тіла запиту як:

Опублікувати _reindex

“Джерело”:
"index": "kibana_sample_data_flights"
,
"dest":
"index": "kibana_sample_type_diff",
"pipeline": "convert_pipeline"

Для curL:

curl -XPOST "http: // localhost: 9200 / _reindex" -H 'Content-Type: application / json' -d '"source": "index": "kibana_sample_data_flights", "dest": "index ":" kibana_sample_type_diff "," pipeline ":" convert_pipeline " '

 Перевірити конверсію

Щоб перевірити, що конвеєр застосовано правильно, використовуйте запит GET, щоб отримати це конкретне поле як:

GET / kibana_sample_data_flights / _mapping / field / dayOfWeek
GET / kibana_sample_type_diff / _mapping / field / dayOfWeek

Це повинно повернути дані як:

-----------------------ОРИГІНАЛЬНИЙ ІНДЕКС---------------------------

"kibana_sample_data_flights":
"відображення":
"dayOfWeek":
"full_name": "dayOfWeek",
"відображення":
"dayOfWeek":
"type": "ціле число"






-------------------------ПЕРЕРИНДУКОВАНІ ДАНІ-------------------------------

"kibana_sample_type_diff":
"відображення":
"dayOfWeek":
"full_name": "dayOfWeek",
"відображення":
"dayOfWeek":
"type": "довгий"





Висновок

У цьому посібнику ми розглянули, як працювати з вузлами Elasticsearch Ingest для попередньої обробки документів перед індексацією, перетворюючи таким чином поле з одного типу на інший.

Розгляньте документацію, щоб дізнатись більше.

https: // www.еластичний.co / guide / en / elasticsearch / reference / master / ingest.html

Як використовувати AutoKey для автоматизації ігор Linux
AutoKey - це утиліта автоматизації робочого столу для Linux та X11, запрограмована на Python 3, GTK та Qt. Використовуючи його сценарії та функціональ...
How to Show FPS Counter in Linux Games
Linux gaming got a major push when Valve announced Linux support for Steam client and their games in 2012. Since then, many AAA and indie games have m...
How to download and Play Sid Meier's Civilization VI on Linux
Introduction to the game Civilization 6 is a modern take on the classic concept introduced in the series of the Age of Empires games. The idea was fai...