【发布时间】:2017-03-21 23:16:03
【问题描述】:
https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_indexing_documents.html
基于 Elasticsearch API 文档
将数据批量转储到elasticsearch
for($i = 0; $i < 100; $i++) {
$params['body'][] = [
'index' => [
'_index' => 'my_index',
'_type' => 'my_type',
]
];
$params['body'][] = [
'my_field' => 'my_value',
'second_field' => 'some more values'
];
}
基本上,您遍历每个文档,为每个文档添加相同的元数据,然后调用批量函数来批量转储这些数据。
我在 Google Cloud Storage 中以 JSON(新行分隔)格式保存数据。文件中有数十万或数百万个相同格式的文档(elasticsearch 的相同索引/类型元数据)。
要将此 Google Cloud Storage 文件批量转储到 Elasticsearch,我必须读取此文件并循环浏览此文件中的每个文档,为每个文档分配相同的元数据,然后最后批量转储到 Elasticsearch。
如果我可以只给出一个元数据(基本上这些文档应该被索引的索引和类型)而不是遍历文件并为每个文档添加相同的元数据并给出整个文件,那就太好了(Json 文档以新行分隔),然后批量转储将完成剩下的工作。
知道 Elasticsearch 批量 API 尚未提供此功能。
但我认为保存在 s3 或谷歌云存储中的批量转储 json 文件到 elasticsearch 是常见的需求。
所以其他人可能已经遇到了这个用例并解决了这个问题。
您的经验有什么建议和建议吗?
谢谢!
【问题讨论】: