ElasticSearch не возвращает задачу «deletebyquery», когда я запрашиваю список задач. - PullRequest
0 голосов
/ 06 августа 2020

Я использую ElasticSearch 7.1.1 и использую API delete_by_query для асинхронного удаления необходимых документов. В результате этот запрос возвращает мне идентификатор задачи. Когда я выполняю следующий запрос:

GET {elasticsearch_cluster_url}/_tasks/{taskId}

, я могу получить соответствующий документ для задачи. Но когда я пытаюсь выполнить такой запрос:

GET {elasticsearch_cluster_url}/_tasks?detailed=true&actions=*/delete/byquery

, я не вижу свою задачу в списке результатов.

Я тоже пытался выполнить такой запрос:

GET {elasticsearch_cluster_url}/_tasks

И я получил такой ответ:

{
    "nodes": {
        "hWZQF7w_Rs6_ZRDZkGpSwQ": {
            "name": "0d5027c3ae6f0bb0105dcdb04470af43",
            "roles": [
                "master"
                ,
                "data"
                ,
                "ingest"
            ],
            "tasks": {
                "hWZQF7w_Rs6_ZRDZkGpSwQ:194259297": {
                    "node": "hWZQF7w_Rs6_ZRDZkGpSwQ",
                    "id": 194259297,
                    "type": "transport",
                    "action": "cluster:monitor/tasks/lists",
                    "start_time_in_millis": 1596710876682,
                    "running_time_in_nanos": 214507,
                    "cancellable": false,
                    "headers": { }
                },
                "hWZQF7w_Rs6_ZRDZkGpSwQ:194259298": {
                    "node": "hWZQF7w_Rs6_ZRDZkGpSwQ",
                    "id": 194259298,
                    "type": "direct",
                    "action": "cluster:monitor/tasks/lists[n]",
                    "start_time_in_millis": 1596710876682,
                    "running_time_in_nanos": 84696,
                    "cancellable": false,
                    "parent_task_id": "hWZQF7w_Rs6_ZRDZkGlDwQ:194259297",
                    "headers": { }
                }
            }
        }
    }
}

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

1 Ответ

1 голос
/ 06 августа 2020

Если ваш вызов удаления по запросу очень недолговечный, вы не увидите его в _tasks после выполнения запроса.

Если вы хотите отслеживать свои вызовы, вам нужно добавить ?wait_for_completion=false к вашему вызову.

Пока запрос выполняется, вы увидите его, используя GET _tasks, однако, когда запрос завершится, вы его не увидите больше не используя GET _tasks, но вместо этого GET .tasks/_search.

После того, как он будет запущен и вы укажете wait_for_completion=false, вы сможете увидеть детали завершенной задачи с помощью GET .tasks/task/<task-id>

...