在前面我们介绍了elasticsearch的mapping创建,那么创建完毕之后,我们则需要对数据进行索引,也就是常说的把数据插入到elasticsearch的索引表里面。这批文章我们就来介绍下Elasticsearch如何索引数据。
在Elasticsearch中我们插入数据可以单条插入,也可以批量插入。下面分别演示下。
一、单条插入
这里我们以前面介绍的devices表来进行演示。devices索引的mapping结构如下:
那么我们再插入数据的时候,可以直接使用post的方式插入即可,例如:
POST /devices/_doc/2 {"device_name":"设备1 ","device_cts":1668666138000,"device_uuid":"789 "}
执行以下,可以看到插入成功了。
然后我们再来看看结果
数据也正常竟来了
二、批量插入
在Elasticsearch中,在数据量非常大的时候,使用批量插入的效率比单条插入的效率高很多,所以建议在尽可能的情况下都使用批量插入。批量插入的方式主要是使用Bulk的方案进行插入,下面演示一下:
post /_bulk {"index":{"_index":"devices","_type":"_doc","_id":"3"}} {"device_name":"设备3 ","device_cts":1668666138000,"device_uuid":"333"} {"index":{"_index":"devices","_type":"_doc","_id":"4"}} {"device_name":"设备4 ","device_cts":1668666138000,"device_uuid":"444"}
在elasticsearch的head插件里面,无法测试批量的插入,因此我们可以把这些json写入到一个文件里面,然后使用curl的方式进行插入,例如:
curl -H "Content-Type: application/json" -XPOST "http://192.168.31.20:9200/_bulk?refresh" --data-binary "@devices.json"
这个@devices.json代表的是读取当前目录下面的devices.json文件数据。执行curl之后的结果是:
然后我们看下插入的数据
以上就是向Elasticsearch索引数据的单插入和批量插入的演示。
备注:
1、在线上环境尽量使用批量插入,用以提高性能。
还没有评论,来说两句吧...