如何通过一次API调用将多个文档发送到弹性文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过一次API调用将多个文档发送到弹性文件相关的知识,希望对你有一定的参考价值。

我是Elastic的新手,我需要一种方法将多个文件推送到Elastic只需要调用POST http://localhost:9200/myindex/mytype/

正文架构如下所示:

{ 
"docs": [ 
{ "_source": {"message":"message1"} }, 
{ "_source": {"message":"message2"} } 
] 
}

我尝试使用摄取API和管道而没有运气。

可能吗?

答案

我认为您需要的是Bulk API,它允许您在单个API调用中执行许多索引/删除操作,从而提高索引速度。这是link

所以你能做的就是

POST http://localhost:9200/_bulk POST http://localhost:9200/myindex/_bulk POST http://localhost:9200/myindex/mytype/_bulk

尝试其中一个与你的身体内容,并让我知道它是否有效。

另一答案

你可以使用bulk api这样做。

例如:

POST _bulk
{"index":{"_index":"my_index","_type":"_doc","_id":"1"}}
{"field1":"field 1 data 1","field2":11}
{"index":{"_index":"my_index","_type":"_doc","_id":"2"}}
{"field1":"field 1 data 2","field2":21}

在你的情况下,这将转换为:

POST _bulk
{"index":{"_index":"myindex","_type":"mytype"}}
{"message":"message1"}
{"index":{"_index":"myindex","_type":"mytype"}}
{"message":"message2"}
另一答案

谢谢你们@JinLee和@NishantSaini帮助我。我想记录下我做了什么。

首先,添加/_bulk端点。所以API调用现在是:POST http://localhost:9200/myindex/mytype/_bulk

现在将Content-Type标题设置为application/x-ndjson

然后身体必须是这样的:

{"index":{}}
{"message":"message1"}
{"index":{}}
{"message":"message2"}

现在一切正常!

以上是关于如何通过一次API调用将多个文档发送到弹性文件的主要内容,如果未能解决你的问题,请参考以下文章

如何通过一次调用将一组对象推送到猫鼬中的数组中?

如何通过一次调用将一组对象推送到猫鼬中的数组中?

防止 nuxt auth 将授权标头发送到外部 url

如何运行多个异步函数然后执行回调?

如何动态地将变量从一个函数发送到另一个函数

如何将带有数据的http标头发送到rest Api codeigniter?