Elasticsearch 批量插入文档
本文介绍Elasticsearch中通过单次请求实现批量插入文档。这种方式可以提升性能,通常打开和关闭连接代价比较高,因此最好多次请求仅做一次。
示例说明
下面示例我们假设系统已经有了索引"myIndex",类型为"person",且映射有name和age两个属性。
简单批量插入
当批量插入所有文档都属于相同索引和类型时,需要说明的是url中包括索引和类型。
POST http://path.to.your.cluster/myIndex/person/_bulk
{ "index":{} }
{ "name":"john doe","age":25 }
{ "index":{} }
{ "name":"mary smith","age":32 }
代码结构或多或少是这样的:一行是要执行的动作(在本例中是“index”),另一行是实际文档。想重复多少次就重复多少次,不要忘记每行最后的换行符。
批量插入不同类型和所有文档
如果你希望插入所有不属于相同类型的索引和文档时,需要在动作行中增加index和type,后面是实际的文档。示例代码如下:
POST http://path.to.your.cluster/_bulk
{ "index":{ "_index": "myIndex", "_type": "person" } }
{ "name":"john doe","age":25 }
{ "index":{ "_index": "myOtherIndex", "_type": "dog" } }
{ "name":"fido","breed":"chihuahua" }
批量插入手动指定ID
除了索引名和类型外,还可以在批量插入请求中为每个文档提供id:
POST http://path.to.your.cluster/myIndex/person/_bulk
{ "index":{} }
{ "name":"john doe","age":25 }
{ "index":{ "_id": "8a78dhkujg" } }
{ "name":"mary smith","age":32 }
总结
本文通过示例介绍了Elasticsearch中如何批量插入文档。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/91506909