我试图理解是否可以使用kinesis firehose将数据索引到elasticsearch,通过传递索引名称和类型(类似于elasticsaerch bulk API)
AWS文档(here)指出:
...另外,您的Elasticsearch集群的rest.action.multi.allow_explicit_index选项必须设置为true(默认值),才能接受带有为每条记录设置的显式索引的批量请求.有关详细信息,请参阅Amazon Elasticsearch服务开发者指南中的Amazon ES配置高级选项。
但是我找不到任何文档说明如何操作,而且消防水管配置需要索引名。
这个尝试没有成功:
const data = [
{
"value": "1",
"_index": "index1",
"_type": "type1"
}];
const params = {
DeliveryStreamName: 'XXX', /* required */
Records: [/* required */
{
Data: JSON.stringify(data[0]) //new Buffer('...') || 'STRING_VALUE' /* Strings will be Base-64 encoded on your behalf */ /* required */
}
]
};
firehose.putRecordBatch(params, (err, data) => {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
将感谢您的帮助
2条答案
按热度按时间neekobn81#
这是很长一段时间以来问,但仍然...根据Kinesis常见问题(https://aws.amazon.com/kinesis/data-firehose/faqs/):
当前,单个传送流只能将数据传送到一个Amazon Elasticsearch服务域和一个索引。如果您希望将数据传送到多个Amazon Elasticsearch域或索引,您可以创建多个传送流。
7tofc5zh2#
如果你的索引后缀是时间戳,AWS提供索引循环https://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html#es-index-rotation。
根据您选择的旋转选项,Kinesis Data Firehose会将UTC到达时间戳的一部分附加到您指定的索引名称。它会相应地旋转附加的时间戳。以下示例显示OpenSearch Service中每个索引旋转选项的结果索引名称,其中指定的索引名称为myindex,到达时间戳为2016-02- 25 T13:00:00 Z。