Обновление по запросу Elasticsearch-PHP Client 2.0+

я использую Elasticsearch 2.1.1 PHP-клиент для моих операций ES. Я хочу обновить свои документы по запросу. Для этого я нашел updatebyquery но это не работает для 2.0+ versions ES. Так есть ли новый способ обновления моих документов по запросу?

1

Решение

Я боролся с updateByQuery а также посмотреть на этот вопрос

Сначала вам нужно отредактировать ваш elasticsearch.yml разрешить сценарии. Добавьте следующие строки в конце.

script.engine.groovy.inline.search: on
script.engine.groovy.inline.aggs: on
script.engine.groovy.inline.update: on

Затем создайте запрос, который обновит все ваши записи, которые соответствуют вашим условиям.

$client = \Elasticsearch\ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
# Request
$updateRequest = [
'index'     => 'testindex',
'type'      => 'logs',
'conflicts' => 'proceed',
'body' => [
'query' => [
'filtered' => [
'filter' => [
'bool' =>   [
'must' =>
[
[
'match' => [ 'enabled' => 1 ],
],
]
]
]
]
],
'script' => [
'inline' => 'ctx._source.enabled = value',
'params' => [
'value' => 0
]
]
]
]
];
# Update
$results = $client->updateByQuery($updateRequest);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]