Во время разработки приложений, отладки или небольшой миграции данных разработчикам часто требуется быстро записать локальные файлы JSON, такие как тестовые наборы данных и файлы конфигурации, в кластер Elasticsearch. По сравнению с инструментами миграции данных, такими как Logstash и CDM, которые сложны в настройке, открытые API Elasticsearch (например, _bulk API) предоставляют более гибкую и легковесную альтернативу, особенно для разовых задач. Вы можете записывать данные через Kibana в интерактивном режиме или выполнять команды cURL на ECS для пакетной загрузки. Оба метода обеспечивают гибкую и эффективную загрузку данных в облачные кластеры Elasticsearch.
В Kibana вы можете выполнять команды POST для импорта данных с использованием открытого API Elasticsearch.
Применимые сценарии: разработка и отладка, небольшие разовые записи данных и проверка синтаксиса.
Левая часть консоли представляет собой поле ввода команд, а треугольный значок в её правом верхнем углу является кнопкой выполнения. Правая часть отображает результат выполнения.
Например, выполните следующую команду для создания индекса my_store:
PUT /my_store{"settings": {"number_of_shards": 1},"mappings": {"properties": {"productName": {"type": "text"},"size": {"type": "keyword"}}}}
PUT /my_store{"settings": {"number_of_shards": 1},"mappings": {"products": {"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"}
POST /my_store/products/_bulk{"index":{}}{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
Проверьте результат. Если значение errors равно false и значение result в каждой записи массива items равно created, все записи успешно записаны.
На сервере ECS вы можете выполнять команды cURL для импорта файлов через открытый API Elasticsearch.
Применимые сценарии: пакетная загрузка локальных файлов JSON с использованием скрипта автоматизации.
Если в кластере есть клиентские узлы, отображаются только IP-адреса и порты всех клиентских узлов. В противном случае отображаются IP-адреса и порты всех узлов данных и узлов холодных данных.
Например, сохраните следующие данные в файл test.json и загрузите его в ECS:
{"index": {"_index":"my_store"}}{"productName":"Autumn new woman blouses 2019","size":"M"}{"index": {"_index":"my_store"}}{"productName":"Autumn new woman blouses 2019","size":"L"}
{"index": {"_index":"my_store","_type":"products"}}{"productName":"Autumn new woman blouses 2019","size":"M"}{"index": {"_index":"my_store","_type":"products"}}{"productName":"Autumn new woman blouses 2019","size":"L"}
Например, выполните следующую команду для создания индекса my_store:
Выполните следующую команду в каталоге 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, все данные успешно загружены.