Выполнение обновления или удаления по запросу
Возможны обновление или удаление документов, но эти действия выполняются только на индексе лидера.
-
Сначала определите, какой базовый индекс содержит документ, который вы хотите обновить.
resp = client.search( index="logs-generic-default*", filter_path="hits.hits._index", query={ "match": { "event.sequence": "97" } }, ) print(resp)response = client.search( index: 'logs-generic-default*', filter_path: 'hits.hits._index', body: { query: { match: { 'event.sequence' => '97' } } } ) puts responseconst response = await client.search({ index: "logs-generic-default*", filter_path: "hits.hits._index", query: { match: { "event.sequence": "97", }, }, }); console.log(response);### On either of the cluster ### GET logs-generic-default*/_search?filter_path=hits.hits._index { "query": { "match": { "event.sequence": "97" } } }- Если результаты поиска возвращают
"_index": ".ds-logs-generic-default-replicated_from_clustera-<yyyy.MM.dd>-*", необходимо перейти к следующему шагу наcluster A. - Если результаты поиска возвращают
"_index": ".ds-logs-generic-default-replicated_from_clusterb-<yyyy.MM.dd>-*", необходимо перейти к следующему шагу наcluster B. - Если результаты поиска возвращают
"_index": ".ds-logs-generic-default-<yyyy.MM.dd>-*", необходимо перейти к следующему шагу в том же кластере, где был выполнен запрос поиска.
- Если результаты поиска возвращают
-
Выполните обновление (или удаление) по запросу:
resp = client.update_by_query( index="logs-generic-default", query={ "match": { "event.sequence": "97" } }, script={ "source": "ctx._source.event.original = params.new_event", "lang": "painless", "params": { "new_event": "FOOBAR" } }, ) print(resp)response = client.update_by_query( index: 'logs-generic-default', body: { query: { match: { 'event.sequence' => '97' } }, script: { source: 'ctx._source.event.original = params.new_event', lang: 'painless', params: { new_event: 'FOOBAR' } } } ) puts responseconst response = await client.updateByQuery({ index: "logs-generic-default", query: { match: { "event.sequence": "97", }, }, script: { source: "ctx._source.event.original = params.new_event", lang: "painless", params: { new_event: "FOOBAR", }, }, }); console.log(response);### On the cluster identified from the previous step ### POST logs-generic-default/_update_by_query { "query": { "match": { "event.sequence": "97" } }, "script": { "source": "ctx._source.event.original = params.new_event", "lang": "painless", "params": { "new_event": "FOOBAR" } } }Если мягкое удаление будет объединено до того, как оно будет реплицировано на ведомом индексе, данный процесс завершится сбоем из-за неполной истории на лидере. Подробнее см. index.soft_deletes.retention_lease.period.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/_perform_update_or_delete_by_query.html