Elasticsearch 批量插入文档

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中如何批量插入文档。

猜你喜欢

转载自blog.csdn.net/m0_54864585/article/details/126359196