https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/_indexing_documents.htmlelasticsearch成批成千上萬的文件
基於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雲端存儲文件批量轉儲到Elasticsearch,我必須讀入此文件並遍歷該文件中的每個文檔,爲每個文檔分配相同的元數據,然後將最終批量轉儲至Elasticsearch。
這將是很好,我可以給一個元數據(基本上爲哪些索引和哪些類型這些文檔應該被索引),而不是循環遍歷文件併爲每個文檔添加相同的元數據,並給予整體文件(Json文檔新行分隔),然後批量轉儲將完成剩下的工作。
瞭解Elasticsearch批量API尚未提供此功能。
但我認爲,在s3中保存的批量轉儲json文件或谷歌雲存儲到elasticsearch是常見的需求。
所以別人可能已經遇到了這個用例並解決了這個問題。
您的經驗有何建議和建議?
謝謝!