Запрос Elasticsearch delete_by_query внезапно завершается?

#elasticsearch #kibana

#elasticsearch #kibana

Вопрос:

Я использую ES версии 7.3 и использую кластер из 5 узлов, теперь я хотел удалить документы из своего кластера на основе некоторого запроса диапазона дат, и миллионы документов должны быть удалены в соответствии с условием, поэтому я ищу эффективный способ сделать это, в настоящее время я использую приведенный нижеупомянутый запрос на kibana,

 POST test/_delete_by_query?scroll_size=10000amp;conflicts=proceed
{
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "co_receivedAt": {
              "lte": "2020-07-18T18:30:00Z"
            }
          }
        }
      ]
    }
  }
}
  

Но этот запрос, похоже, очень медленно удаляет документы, и иногда он внезапно завершается, я отслеживал эту задачу удаления и получил этот ответ,

 {
  "nodes" : {
    "ijZYh9CITH6ETFB-IfAEAg" : {
      "name" : "ip-1-0-4-113",
      "transport_address" : "1.0.4.113:9300",
      "host" : "1.0.4.113",
      "ip" : "1.0.4.113:9300",
      "roles" : [
        "ingest",
        "master",
        "data"
      ],
      "attributes" : {
        "ml.machine_memory" : "33245122560",
        "rack" : "rack-01",
        "xpack.installed" : "true",
        "ml.max_open_jobs" : "20"
      },
      "tasks" : {
        "ijZYh9CITH6ETFB-IfAEAg:288887138" : {
          "node" : "ijZYh9CITH6ETFB-IfAEAg",
          "id" : 288887138,
          "type" : "transport",
          "action" : "indices:data/write/delete/byquery",
          "status" : {
            "total" : 10017699,
            "updated" : 0,
            "created" : 0,
            "deleted" : 0,
            "batches" : 1,
            "version_conflicts" : 0,
            "noops" : 0,
            "retries" : {
              "bulk" : 11,
              "search" : 0
            },
            "throttled_millis" : 0,
            "requests_per_second" : -1.0,
            "throttled_until_millis" : 0
          },
          "description" : "delete-by-query [test]",
          "start_time_in_millis" : 1605004115156,
          "running_time_in_nanos" : 22672616111,
          "cancellable" : true,
          "headers" : { }
        }
      }
    }
  }
}
  

затем через несколько мгновений эта задача не существует, и она была завершена, иногда она продолжает выполняться, но иногда она часто терпит неудачу, поскольку я заметил, что количество моих массовых попыток велико. Какой эффективный способ удалить мои документы, около 200 миллионов документов, которые необходимо удалить.

Комментарии:

1. Можете ли вы добавить amp;wait_for_completion=false к своему вызову delete by query, а затем вы можете запустить этот вызов, чтобы получить больше информации о том, что пошло не так после того, как задача перестала выполняться: GET .tasks/_search

2. ответ, которым я поделился выше, был после выполнения этой команды GET _tasks? подробный =trueamp;actions=*/delete/byquery

3. Да, но после того, как задача перестала выполняться, вы понятия не имеете, что пошло не так, потому что результаты задачи не были сохранены… Добавление amp;wait_for_completion=false даст вам эту информацию

4. Итак, что вы получаете при запуске GET .tasks/_search после внезапного завершения задачи?