Дифференциация задач _delete_by_query в мультитенантном индексе - PullRequest
0 голосов
/ 03 октября 2019

Сценарий: у меня есть индекс с кучей мультитенантных данных в Elasticsearch 6.x. Эти данные часто удаляются (через _delete_by_query) и заполняются арендаторами.

При отправке запроса _delete_by_query с wait_for_completion=false, предоставив запрос JSON для удаления данных арендаторов, я могусм. общую информацию о задаче через _tasks API. Проблема в том, что при большом количестве арендаторов неясно, кто удаляет данные в любой момент времени.

У меня такой вопрос: есть ли способ просмотреть запрос, для которого _delete_by_queryзадача работает? Или я могу добавить дополнительный параметр к URL-адресу, который кэшируется в задаче, чтобы различать их?

Примечание: глядя на документы: https://www.elastic.co/guide/en/elasticsearch/reference/6.6/tasks.html Я вижу, что в поле description естьответ _tasks API, который содержит запрос в виде строки, однако я не вижу такого уровня детализации в моем поле description: "description" : "delete-by-query [myindex]"

Заранее спасибо

1 Ответ

2 голосов
/ 03 октября 2019

Одним из способов идентификации запросов является добавление X-Opaque-Id заголовка HTTP к вашим запросам:

Например, при удалении всех данных арендатора для (например) пользователя 3 вы можетевведите следующую команду:

curl -XPOST -H 'X-Opaque-Id: 3' -H 'Content-type: application/json' http://localhost:9200/my-index/_delete_by_query?wait_for_completion=false -d '{"query":{"term":{"user": 3}}}'

Затем вы получите идентификатор задачи, и при проверке документа связанной задачи вы сможете определить, какая задача или какие данные арендатора удалялась / удалялась, благодаря headers раздел, содержащий ваш HTTP-заголовок:

  "_source" : {
    "completed" : true,
    "task" : {
      "node" : "DB0GKYZrTt6wuo7d8B8p_w",
      "id" : 20314843,
      "type" : "transport",
      "action" : "indices:data/write/delete/byquery",
      "status" : {
        "total" : 3,
        "updated" : 0,
        "created" : 0,
        "deleted" : 3,
        "batches" : 1,
        "version_conflicts" : 0,
        "noops" : 0,
        "retries" : {
          "bulk" : 0,
          "search" : 0
        },
        "throttled_millis" : 0,
        "requests_per_second" : -1.0,
        "throttled_until_millis" : 0
      },
      "description" : "delete-by-query [deletes]",
      "start_time_in_millis" : 1570075424296,
      "running_time_in_nanos" : 4020566,
      "cancellable" : true,
      "headers" : {
        "X-Opaque-Id" : "3"                             <--- user 3
      }
    },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...