使用Kibana或API导入数据到Elasticsearch
云搜索服务支持使用Kibana或者API将数据导入到Elasticsearch中,数据文件支持JSON等格式。
使用Kibana导入数据
- 登录云搜索服务管理控制台。
- 在左侧导航栏中,选择“集群管理 > Elasticsearch”,进入集群管理列表页面。
- 选择已创建的集群,单击操作列“Kibana”,登录Kibana。
- 单击左侧导航栏的“Dev Tools”进入操作页面。
- 在Kibana操作界面,执行命令查看集群是否存在索引。
GET _cat/indices?v
如果待导入数据的集群已存在可用的索引,则不需要再创建索引,请执行步骤7。
如果待导入数据的集群不存在可用的索引,则需要执行下一步创建索引。
- 执行命令创建待存储数据的索引,并指定自定义映射来定义数据类型。
例如:在Console界面,执行如下命令,创建索引“my_store”,并指定自定义映射来定义数据类型。
低于7.x版本PUT /my_store { "settings": { "number_of_shards": 1 }, "mappings": { "products": { "properties": { "productName": { "type": "text" }, "size": { "type": "keyword" } } } } }
7.x版本及高于7.x版本
PUT /my_store { "settings": { "number_of_shards": 1 }, "mappings": { "properties": { "productName": { "type": "text" }, "size": { "type": "keyword" } } } }
- 执行命令导入数据,以导入一条数据为例,执行如下命令。
低于7.x版本
POST /my_store/products/_bulk {"index":{}} {"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
7.x版本及高于7.x版本
POST /my_store/_bulk {"index":{}} {"productName":"Latest art shirts for women in 2017 autumn","size":"L"}
返回结果如图1所示,当返回结果信息中“errors”字段的值为“false”时,表示导入数据成功。
使用API导入数据
使用bulk API通过curl命令导入数据文件,如下操作以JSON数据文件为例。
- 登录即将接入集群的弹性云服务器。
登录弹性云服务器的详细操作请见登录弹性云服务器。
- 将JSON数据文件上传至ECS。
- 在ECS中存放JSON数据文件的路径下执行如下命令,将JSON数据导入到Elasticsearch集群。
其中,{Private network address and port number of the node}需替换为集群中节点的内网访问地址和端口号,当该节点出现故障时,将导致命令执行失败。如果集群包含多个节点,可以将{Private network address and port number of the node}替换为集群中另一节点的内网访问地址和端口号;如果集群只包含一个节点,则需要将该节点修复之后再次执行命令进行导入数据。test.json为导入数据的json文件。
curl -X PUT "http://{Private network address and port number of the node} /_bulk" -H 'Content-Type: application/json' --data-binary @test.json
其中,-X参数的参数值为命令,如“-X PUT”,-H参数的参数值为消息头,如“-H 'Content-Type: application/json' --data-binary @test.json”。添加的-k参数时,请勿将-k参数放置在参数与参数值之间。
示例:将“test.json”数据文件中的数据导入至Elasticsearch集群,此集群未进行通信加密,其中一个节点内网访问地址为“192.168.0.90”,端口号为“9200”。其中test.json文件中的数据如下所示:
低于7.x版本
{"index": {"_index":"my_store","_type":"products"}} {"productName": "2019秋装新款文艺衬衫女装","size": "M"} {"index": {"_index":"my_store","_type":"products"}} {"productName": "2019秋装新款文艺衬衫女装","size": "L"}
7.x版本及高于7.x版本
{"index": {"_index":"my_store"}} {"productName": "2019秋装新款文艺衬衫女装","size": "M"} {"index": {"_index":"my_store"}} {"productName": "2019秋装新款文艺衬衫女装","size": "L"}
导入数据的操作步骤如下所示:
- 可执行以下命令,创建my_store索引。
低于7.x版本
curl -X PUT http://192.168.0.90:9200/my_store -H 'Content-Type: application/json' -d ' { "settings": { "number_of_shards": 1 }, "mappings": { "products": { "properties": { "productName": { "type": "text" }, "size": { "type": "keyword" } } } } }'
7.x版本及高于7.x版本
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" } } } }'
- 执行以下命令,导入test.json文件中的数据。
curl -X PUT "http://192.168.0.90:9200/_bulk" -H 'Content-Type: application/json' --data-binary @test.json
本案例回显如下信息,表示数据导入成功。
{"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}}]}
- 可执行以下命令,创建my_store索引。