ElasticSearch - 使用刷新批量索引

时间:2017-04-19 00:46:53

标签: php elasticsearch

我需要尽快索引大约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的正确方法是什么?

2 个答案:

答案 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);