Обновить/вставить документ в ElasticPhp

Кемеровские программисты php общаются здесь
Гость
Обновить/вставить документ в Elastic

Сообщение Гость »

У меня есть индекс поиска Elastic, куда я хочу вставить или обновить документ.
По сути моя идея заключается в следующем:
  • если документ не существует, создайте документ с определенным идентификатором и добавьте указанные параметры.
  • если документ существует, оставьте все существующие поля как есть и добавить/обновить указанное поле.
Я экспериментировал с функцией upsert, но безуспешно.
Я я использую PHP и Elastic ClientBuilder.
У меня есть код, который правильно индексирует новый документ. Когда я попытался реализовать функцию upsert, она правильно обновила документ, но обновила указанное новое поле и удалила все уже существующие поля.
Этот код работает для вставки документа:
Этот код работает для вставки документа:
Этот код работает для вставки документа:
Этот код работает для вставки документа:
р>

Код: Выделить всё

$ID = "XYZ";
$output = array("field1" => 1, "field2" => 2);
$params = [
'index' => 'dataindex',
'id' => $ID,
'body' => $output,
];

$response = $client->index($params);
Теперь допустим, я хочу обновить значение поля 2 с 2 на 3. Я попробовал функцию upsert, но она не сработала. Одна вещь, которая могла быть проблематичной и, вероятно, поэтому она не работала — для каждого документа сохраняется несколько полей, а не только 2, как показано выше. Допустим, их 15. Однако не все документы будут иметь все поля. Поэтому при обновлении документа я хочу обновить значение поля, переданное во время этого обновления, и оставить все остальные существующие поля такими, какие они есть, поскольку я не знаю, какие еще поля присутствуют в этом документе.
Можно ли в одном запросе вставить/обновить документ так, как мне нужно? А если нет, то как правильно.
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/782 ... in-elastic

Вернуться в «Php»