我需要在Elasticsearch数据库中插入约150万个文档。我通过this example (BULK example)
通过PHP库Elastica来完成此操作我想知道在批量插入的最后是否可以使用调用$elasticaType->getIndex()->refresh();
命令,并且比每次发送批量调用之后调用$elasticaType->getIndex()->refresh();
都安全且快捷。
我的意思是这样的:
$offset = 0;
$limit = 500;
$sum = 1500000,
while( $offset < $sum )
{
$documents = [];
$rows = $sqlDatabase->getData( $offset, $limit )
foreach( $rows as $row )
{
$docData = ['name' => $row->name, 'email' => $row->email]
$documents[] = new \Elastica\Document( $data->id, $docData );
}
$elasticaType->addDocuments( $documents );
$offset += 500;
// Source example has refresh here. After every 500 items. But I wont it at the very end of the code after all 1500000 item are in the database.
// $elasticaType->getIndex()->refresh();
}
$elasticaType->getIndex()->refresh(); // This is what I want.
是否可以将1500000个文档插入elasticsearch然后调用$elasticaType->getIndex()->refresh();
?
答案 0 :(得分:0)
是否可以将1500000个文档插入elasticsearch然后 呼叫$ elasticaType-> getIndex()-> refresh();?
绝对可以。
refresh使您的文档可供搜索。此机制派生自Apache Lucene,可提供近实时(NRT)搜索功能,它使用DirectoryReader.openIfChanged重新打开索引。
通常您不必自己做,定期安排刷新 默认情况下,您可以将refresh_interval的值更改为更短的时间以进行NRT搜索,或更长的时间以提高性能。