#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
после внезапного завершения задачи?