Во время разработки приложений, отладки или небольшой миграции данных разработчикам часто требуется быстро записать локальные файлы JSON, такие как тестовые наборы данных и файлы конфигурации, в кластер OpenSearch. По сравнению с инструментами миграции данных, такими как Logstash и CDM, которые сложны в настройке, открытые API OpenSearch (например, _bulk API) предоставляют более гибкую и легковесную альтернативу, особенно для разовых задач. Вы можете записывать данные через OpenSearch Dashboards в интерактивном режиме или выполнять команды cURL на ECS для пакетной загрузки. Оба метода обеспечивают гибкую и эффективную загрузку данных в облачные кластеры OpenSearch.
В OpenSearch Dashboards вы можете выполнять команды POST для импорта данных с использованием открытого API OpenSearch.
Применимые сценарии: разработка и отладка, небольшие разовые записи данных и проверка синтаксиса.
Левая часть консоли представляет собой поле ввода команд, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть отображает результат выполнения.
Например, выполните следующую команду для создания индекса my_store:
PUT /my_store{"settings": {"number_of_shards": 1},"mappings": {"properties": {"productName": {"type": "text"},"size": {"type": "keyword"}}}}
Например, выполните следующую команду для записи записи в индекс my_store:
POST /my_store/_bulk{"index":{}}{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
Проверьте результат. Если значение errors равно false и значение result в каждой записи в массиве items равно created, все записи успешно записаны.
На сервере ECS вы можете выполнять команды cURL для импорта файлов через открытый API OpenSearch.
Применимые сценарии: пакетная загрузка локальных файлов JSON с использованием скрипта автоматизации.
Если в кластере есть клиентские узлы, отображаются только IP‑адреса и порты всех клиентских узлов. В противном случае отображаются IP‑адреса и порты всех узлов данных и холодных узлов данных.
Например, сохраните следующие данные в файл test.json и загрузите его на ECS:
Например, выполните следующую команду для создания индекса my_store:
curl -X PUT "http://<host>:<port>/my_store" \-H 'Content-Type: application/json' \-d '{"settings": {"number_of_shards": 1},"mappings": {"properties": {"productName": {"type": "text"},"size": {"type": "keyword"}}}}'
curl -X PUT -u <user>:<password> "http://<host>:<port>/my_store" \-H 'Content-Type: application/json' \-d '{"settings": {"number_of_shards": 1},"mappings": {"properties": {"productName": {"type": "text"},"size": {"type": "keyword"}}}}'
curl -X PUT -k -u <user>:<password> "https://<host>:<port>/my_store" \-H 'Content-Type: application/json' \-d '{"settings": {"number_of_shards": 1},"mappings": {"properties": {"productName": {"type": "text"},"size": {"type": "keyword"}}}}'
Выполните следующую команду в каталоге ECS, где хранится JSON‑файл:
curl -X POST "http://<host>:<port>/_bulk" \-H 'Content-Type: application/json' \--data-binary @test.json
curl -X POST -u <user>:<password> "http://<host>:<port>/_bulk" \-H 'Content-Type: application/json' \--data-binary @test.json
curl -X POST -k -u <user>:<password> "https://<host>:<port>/_bulk" \-H 'Content-Type: application/json' \--data-binary @test.json
If the designated cluster node is unavailable, the command will fail. If the cluster contains multiple nodes, replace <host> with the IP address of another node. If the cluster contains only one node, you have to wait until the node recovers.
После загрузки данных возвращается следующая информация:
Если значение errors равно false, все данные успешно загружены.