Еластично търсене

Elasticsearch Reindex Промяна на типа на полето

Elasticsearch Reindex Промяна на типа на полето

Работата с бази данни е много забавна, но понякога може да бъде предизвикателство, особено когато се работи с вече съществуващи данни.

Например, ако искате да промените типа на конкретно поле, може да се наложи да свалите услугата, което може да има сериозни последици, особено в услугите, които обработват големи количества данни.

За щастие можем да използваме мощните функции на Elasticsearch като Reindexing, поглъщане на възли, тръбопроводи и процесори, за да улесним подобни задачи.

Този урок ще ви покаже как да промените тип поле в конкретен индекс на друг, като използвате възли Elasticsearch Ingest. Използването на този подход ще премахне престоя, който засяга услугите, като същевременно успява да изпълни задачите за промяна на типа поле.

Въведение в Ingest Nodes

Поглъщащият възел на Elasticsearch ви позволява да обработвате предварително документи преди тяхното индексиране.

Elasticsearch възел е специфичен екземпляр на Elasticsearch; свързаните възли (повече от един) правят един клъстер.

Можете да видите възлите, налични в изпълняващия се клъстер със заявката:

ВЗЕМЕТЕ / _nodes /

Командата cURL за това е:

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

Изпълнението на тази команда трябва да ви даде масивна информация за възлите, както е показано по-долу (пресечен изход):


"_nodes":
"общо": 3,
"успешно": 3,
"неуспешно": 0
,
"име на клъстер": "22e0bee6ef91461d82d9b0f1b4b13b4a",
"възли":
"gSlMjTKyTemoOX-EO7Em4w":
"name": "instance-0000000003",
"transport_address": "172.28.86.133: 19925 ",
"домакин": "172.28.86.133 ",
"ip": "172.28.86.133 ",
"версия": "7.10.2 ",
"build_flavor": "по подразбиране",
"build_type": "докер",
"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 ",
"трансформирам.възел ":" вярно ",
"region": "us-west-1"
,
"настройки" :
"s3":
"клиент":
"elastic-internal-22e0be":
"крайна точка": "s3-us-west-1.amazonaws.com "


,
--------------------------------изход съкратен---------------------

По подразбиране всички възли на Elasticsearch позволяват поглъщане и могат да обработват поглъщащи операции. За тежки операции с поглъщане обаче можете да създадете единичен възел, посветен само на поглъщане.

За да се справим с pre_process, преди да индексираме документите, трябва да дефинираме конвейер, който посочва поредицата от препроцесори.

Предпроцесорите са набори от инструкции, увити около тръбопровод и се изпълняват една по една.

По-долу е общият синтаксис на това как да се дефинира конвейер:


"description": "Преобразувай ме",
„процесори“: [
"конвертиране":
"field": "id",
"type": "integer"
]

Свойството description казва какво трябва да постигне тръбопроводът. Следващият параметър са препроцесорите, предадени като списък по реда на тяхното изпълнение.

Създайте конвертиране на тръбопровод

За да създадете конвейер, който ще използваме за конвертиране на тип, използвайте заявката PUT с крайната точка на API на _ingest като:

PUT _ingest / pipeline / convert_pipeline

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

"конвертиране":
"field": "dayOfWeek",
"type": "long"


]

За cURL използвайте командата:

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

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

След като имаме конвейера в поглъщащия възел, всичко, което трябва да направим, е да извикаме API за индексиране и да предадем конвейера като аргумент в дестинацията на тялото на заявката като:

POST _reindex

„Източник“:
"index": "kibana_sample_data_flights"
,
"dest":
"индекс": "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, за да извлечете това конкретно поле като:

ВЗЕМЕТЕ / kibana_sample_data_flights / _mapping / field / dayOfWeek
GET / kibana_sample_type_diff / _mapping / field / dayOfWeek

Това трябва да върне данните като:

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

"kibana_sample_data_flights":
"mappings":
"ден на седмицата" :
"full_name": "dayOfWeek",
"mapping":
"ден на седмицата" :
"type": "integer"






-------------------------ПРЕИНДЕКСИРАНИ ДАННИ-------------------------------

"kibana_sample_type_diff":
"mappings":
"ден на седмицата" :
"full_name": "dayOfWeek",
"mapping":
"ден на седмицата" :
"type": "long"





Заключение

В това ръководство разгледахме как да работим с възлите на Elasticsearch Ingest за предварителна обработка на документи преди индексиране, като по този начин преобразуваме поле от един тип в друг.

Разгледайте документацията, за да научите повече.

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

Преглед на безжична мишка на Microsoft Sculpt Touch
Наскоро прочетох за Microsoft Sculpt Touch безжична мишка и реших да я купя. След като го използвах известно време, реших да споделя опита си с него. ...
Екранен тракпад и указател на мишката на AppyMouse за таблети с Windows
Потребителите на таблети често пропускат показалеца на мишката, особено когато са привични да използват лаптопите. Смартфоните и таблетите със сензоре...
Средният бутон на мишката не работи в Windows 10
The среден бутон на мишката ви помага да превъртате дълги уеб страници и екрани с много данни. Ако това спре, добре ще свършите да използвате клавиату...