Elasticdump — это инструмент, используемый для управления и миграции данных в Elasticsearch и OpenSearch. Elasticdump позволяет пользователям перемещать и сохранять индексы, экспортируя данные в файл JSON, а затем импортируя их в другое место. Эта функция особенно полезна для резервного копирования и восстановления, а также для миграции данных между различными окружениями (например, из разработки в производство).
Теперь вы можете использовать Elasticdump для импорта ваших индексов Elasticsearch/OpenSearch в Manticore. Вы можете выбрать один из двух доступных вариантов: импортировать целый индекс или импортировать только его схему.
Импорт схемы и данных
Чтобы скопировать индекс в Manticore вместе с данными, вы можете использовать следующую команду:
elasticdump --input=http://localhost:9200/your_elasticsearch_or_opensearch_index --output=http://localhost:9308/your_manticore_table --type=data
Давайте рассмотрим простой пример использования. Вот оригинальный индекс Elasticsearch с именем test
с этой схемой:
# curl -sX GET localhost:9200/test/_mapping
{
"test": {
"mappings": {
"properties": {
"price": {
"type": "float"
},
"title": {
“type": "text"
}
}
}
}
}
и 300 документов в нем:
# curl -sX GET localhost:9200/test/_count
{
"count": 300,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
}
}
Пока что у нас нет никаких таблиц в Manticore:
# curl -sX GET localhost:9308/cli -d 'SHOW TABLES'
Пустой набор (0.000 сек)
Теперь давайте запустим Elasticdump:
# elasticdump --input=http://localhost:9200/test --output=http://localhost:9308/test_imported --type=data
Вт, 26 Фев 2024 16:18:52 GMT | начало дампа
(узел:156) [DEP0040] Предупреждение об устаревании: Модуль `punycode` устарел. Пожалуйста, используйте альтернативу из пользовательской среды.
(Используйте `node --trace-deprecation ...`, чтобы показать, где было создано предупреждение)
Вт, 26 Фев 2024 16:18:52 GMT | получено 300 объектов из исходного elasticsearch (сдвиг: 0)
Вт, 26 Фев 2024 16:18:52 GMT | отправлено 300 объектов в назначение elasticsearch, записано 300
Вт, 26 Фев 2024 16:18:52 GMT | получено 0 объектов из исходного elasticsearch (сдвиг: 300)
Вт, 26 Фев 2024 16:18:52 GMT | Всего записей: 300
Вт, 26 Фев 2024 16:18:52 GMT | дамп завершен
И проверим результаты импорта, который мы сделали:
# curl -sX GET localhost:9308/cli -d 'DESC test_imported'
+-------+--------+----------------+
| Поле | Тип | Свойства |
+-------+--------+----------------+
| id | bigint | |
| title | text | индексированный сохранён |
| price | float | |
+-------+--------+----------------+
3 строки в наборе (0.000 сек)
# curl -sX GET localhost:9308/cli -d 'SELECT COUNT(*) FROM test_imported'
+----------+
| count(*) |
+----------+
| 300 |
+----------+
1 строка в наборе (0.000 сек)
Мы видим, что таблица была скопирована.
Импорт только схемы
Чтобы импортировать только схему таблицы, выполните:
# elasticdump --input=http://localhost:9200/your_elasticsearch_or_opensearch_index --output=http://localhost:9308/your_manticore_table --type=mapping
Вы получите новую пустую таблицу Manticore с структурой, импортированной из оригинального узла.
Обратите внимание, что в приведённых выше примерах используются порты по умолчанию для Elasticsearch и Manticore: localhost:9200
и localhost:9308
, соответственно. Если вы используете другие хосты/порты для подключения к Elasticsearch, OpenSearch или Manticore, вам следует соответствующим образом изменить вашу команду.
Также имейте в виду, что Manticore преобразует некоторые типы данных Elasticsearch в собственные, если он не поддерживает их внутренне:
aggregate_metric
=>json
binary
=>string
boolean
=>bool
byte
=>int
completion
=>string
date
=>timestamp
date_nanos
=>bigint
date_range
=>json
dense_vector
=>json
flattened
=>json
flat_object
=>json
float
=>float
float_range
=>json
geo_point
=>json
geo_shape
=>json
half_float
=>float
histogram
=>json
integer
=>int
integer_range
=>json
ip
=>string
ip_range
=>json
keyword
=>string
knn_vector
=>float_vector
,long
=>bigint
long_range
=>json
match_only_text
=>text
object
=>json
point
=>json
scaled_float
=>float
search_as_you_type
=>text
shape
=>json
short
=>int
text
=>text
unsigned_long
=>int
version
=>string
Например, если вы импортируете индекс Elasticsearch следующим образом:
{
"test": {
"mappings": {
"properties": {
"location": {
"type": "geo_point"
},
"title": {
"type": "text"
}
}
}
}
}
импортированная таблица Manticore будет иметь следующую схему:
+----------+--------+----------------+
| Поле | Тип | Свойства |
+----------+--------+----------------+
| id | bigint | |
| title | text | индексированный сохранён |
| location | json | |
+----------+--------+----------------+
Заключение
В заключение, Manticore Search теперь поддерживает Elasticdump, что упрощает пользователям переход с Elasticsearch или OpenSearch на Manticore. Это обновление упрощает процесс миграции, позволяя пользователям плавно переносить данные и схему. Это большой шаг для тех, кто хочет перейти на Manticore Search без хлопот, связанных со сложным переносом данных. Эта интеграция означает простой процесс миграции, который сохраняет ваши данные нетронутыми, делая Manticore Search привлекательным выбором для улучшения поисковых возможностей с легкостью.