Задать вопрос
@kolya_krut

Как дождаться выполнения всех запросов в Elasticsearch?

Здравствуйте.

Прощу прощения за нубизм, но не могу разобраться с сабжем.
В php скрипте необходимо выполнить bulk запрос и дождаться, пока он весь выполнится. Для работы с ES используется их официальная либа. Как я понял из доков, для решения можно воспользоваться Future Mode. Но не получается правильно ее применить. Использую так:
// вызов функций одну за другой
func_bulk();
func_search();

// выполнение запроса
function func_bulk()
{
    $params['client'] = [
        'future' => 'lazy'
    ];
    $response = $this->elastic->bulk($params);
    while ($response instanceof FutureArray) {
        $response = $response->wait();
    }
}

// поиск того, что сделано в func_bulk()
function func_search()
{
    $params = [
        'index' => 'my_index',
        'type' => 'my_type',
        'id' => 'my_id'
    ];
    $response = $client->get($params);
}


func_search() ничего не находит, т.к. документы еще не проиндексировались. Если перед функцией вставить залипень типа sleep(5), всё находит, но это несерьезно. Как же все-таки дождаться пока ES закончит свои дела?
  • Вопрос задан
  • 208 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽