我需要尽快索引大约1000份文件。我决定使用批量函数,其工作速度比原始解决方案快10倍。我需要在索引结束后立即生成refresh以使文档可搜索。在其他情况下,我会使用刷新参数 'refresh'=>是的, ,但我不能让它在PHP中使用批量。我使用code from official documentation。
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'
];
}
$responses = $client->bulk($params);
在PHP批量函数中使用refresh的正确方法是什么?
答案 0 :(得分:0)
我使用假更新操作,批量
后刷新$params = [
'index' => 'my_index',
'type' => 'refresh',
'id' => 'refresh',
'refresh' => true, // REFRESH
'body' => []
];
$client->index($params);
这不是最好的方法,但唯一有效的方法。
答案 1 :(得分:0)
只需添加
$params['refresh'] = true;
之后和批量插入之前。
所以最终代码将是
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'
];
}
$params['refresh'] = true;
$responses = $client->bulk($params);