With CSS, you can use open-source OpenSearch APIs on OpenSearch Dashboards or an ECS server to import data to an OpenSearch cluster. JSON files are supported. For details about OpenSearch APIs, see REST API reference.
On OpenSearch Dashboards, you can run POST commands to import single pieces of data using an open-source OpenSearch API.
The left part of the console is the command input box, and the triangle icon in its upper-right corner is the execution button. The right part shows the execution result.
GET _cat/indices?v
For example, run the following command to create index my_store:
PUT /my_store{"settings": {"number_of_shards": 1},"mappings": {"properties": {"productName": {"type": "text"},"size": {"type": "keyword"}}}}
POST /my_store/_bulk{"index":{}}{"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
The command output is similar to that shown in Figure 1. If the value of the errors field in the result is false, the data is successfully imported.
Figure 1 Response message

On an ECS server, you can run cURL commands to use an open-source OpenSearch API to import JSON files.
In the example below, a cluster in non-security mode is used to describe how to import data using cURL commands. For the commands to use with a security cluster, see Accessing an OpenSearch Cluster Using cURL Commands.
If the cluster has only one node, the IP address and port number of this single node are displayed, for example, 10.62.179.32:9200. If the cluster has multiple nodes and all of them are data nodes, the IP addresses and port numbers of all these nodes are displayed; if some of them are client nodes, only the IP addresses and port numbers of these client nodes are displayed; for example, 10.62.179.32:9200,10.62.179.33:9200.
For example, save the following data as a JSON file and upload the file to the 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"}
curl -X PUT "http://{Private network address and port number of the node}/_bulk" -H 'Content-Type: application/json' --data-binary @test.json
Replace {Private network address and port number of the node} with the private network address and port number of a node in the cluster. The value of the -X parameter is a command and that of the -H parameter is a message header. In the preceding command, PUT is the value of the -X parameter and 'Content-Type: application/json' --data-binary @test.json is the value of the -H parameter. Do not add -k between a parameter and its value. test.json indicates the JSON file to be imported.
In the case of the failure of a cluster node, if the cluster contains multiple nodes, you can replace {Private network address and port number of the node} with the private network address and port number of any available node in the cluster; if the cluster contains only one node, restore this node and execute the command again.
Example: In this example, assume that you need to import data in the test.json file to an OpenSearch cluster, where communication encryption is disabled and the private network address and port number of one node are 192.168.0.90 and 9200 respectively.
curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d '{"settings": {"number_of_shards": 1},"mappings": {"properties": {"productName": {"type": "text"},"size": {"type": "keyword"}}}}'
curl -X PUT "http://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @test.json
In this case, if the following information is displayed, the data is successfully imported:
{"took":204,"errors":false,"items":[{"index":{"_index":"my_store","_type":"_doc","_id":"DJQkBIwBbJvUd2769Wi-","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1,"status":201}},{"index":{"_index":"my_store","_type":"_doc","_id":"DZQkBIwBbJvUd2769Wi_","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1,"status":201}}]}