Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Репликация между кластерами ›Практическое руководство: Аварийное восстановление на основе двусторонней репликации между кластерами

Выполнение обновления или удаления по запросу

Возможны обновление или удаление документов, но эти действия выполняются только на индексе лидера.

  1. Сначала определите, какой базовый индекс содержит документ, который вы хотите обновить.

    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 response
    const 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>-*", необходимо перейти к следующему шагу в том же кластере, где был выполнен запрос поиска.
  2. Выполните обновление (или удаление) по запросу:

    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 response
    const 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API