ElasticSearch перемещение узлов в документе - PullRequest
0 голосов
/ 16 марта 2020

У меня есть несколько документов, которые имеют вложенные объекты. Мне нужно переместить расположение вложенных объектов в документе.

Как я могу это сделать, скажем, переместить пользователей из групп в следующем примере:

{
  "resourceGroup": "",
  "abc": "Ok",
  "firstSeen": "2020-03-16T08:45:02.444Z",
  "entityId": "29e7d555-1959-4b9b-b663-ce0d04f3e5a7",
  "type": "GroupEntity",
  "group": {
    "onPremisesProvisioningErrors": ,
    "mailNickname": "74b06328-1",
    "users": [
      {
        "mail": "abc@aaa.com",
        "mailNickname": "sdf"
      },
      {
        "displayName": "test user",
        "mailNickname": "testuser1"
      }
    ],

  }
}

1 Ответ

0 голосов
/ 16 марта 2020

Вы можете использовать узел загрузки

Использовать узел загрузки для предварительной обработки документов до того, как произойдет фактическая индексация документа. Узел загрузки перехватывает массовые и индексные запросы, применяет преобразования и затем передает документы обратно в индексный или массовый API.

Sample Mapping

PUT index54
{
  "mappings": {
    "properties": {
      "resourceGroup": {
        "type": "text"
      },
      "group": {
        "type": "object",
        "properties": {
          "users": {
            "type": "nested",
            "properties": {
              "mail": {
                "type": "text"
              },
              "mailNickname": {
                "type": "text"
              }
            }
          }
        }
      }
    }
  }
}

Ingest Pipeline

PUT _ingest/pipeline/moveuserspropertypipeline
{
  "description" : "move users out of group",
  "processors" : [
    {
      "set" : {
        "field": "users",
        "value": "{{group.users}}"
      }
    },
    {
      "remove": {
        "field": "group.users"
      }
    }
  ]
}

С помощью reindex API документы могут быть скопированы из исходного индекса в новый индекс. Создайте целевой индекс с правильным отображением перед выполнением reindex api

POST _reindex
{
  "source": {
    "index": "index54"
  },
  "dest": {
    "index": "index55",
    "pipeline": "moveuserspropertypipeline"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...