Подтвердить что ты не робот

Elasticsearch Удалить свойство сопоставления

Я пытаюсь найти подход для удаления всех записей для определенного свойства в индексе elasticsearch и удалить все сопоставления типов для этого свойства.

Я просматриваю следующие две страницы документа: поставить сопоставление и удалить сопоставление

От второй ссылки:

"Разрешить удалять сопоставление (тип) вместе с его данными. REST конечной точкой является /{index}/{type} с методом DELETE."

Мне кажется, что мне нужно /{index}/{type}/{property}?

Нужно ли мне воссоздать весь индекс, чтобы выполнить это, т.е. перемещение и управление данными между типами?

Например, вызов GET при отображении:

curl -XGET 'http://.../some_index/some_type/_mapping'

результат:

{
  "some_type": {
    "properties": {
      "propVal1": {
        "type": "double",
        "index": "analyzed"
      },
      "propVal2": {
        "type": "string",
        "analyzer": "keyword"
      },
      "propVal3": {
        "type": "string",
        "analyzer": "keyword"
      }
    }
  }
}

после того, как эта операция удаления на propVal3 вернется:

curl -XGET 'http://.../some_index/some_type/_mapping'

результат:

{
  "some_type": {
    "properties": {
      "propVal1": {
        "type": "double",
        "index": "analyzed"
      },
      "propVal2": {
        "type": "string",
        "analyzer": "keyword"
      }
    }
  }
}

и все данные для propVal3 будут удалены с помощью индекса.

4b9b3361

Ответ 1

Вы не можете этого сделать. Просто забудьте, что это значение существует...;-) Если вам действительно нужно удалить его, вам придется переиндексировать свои документы.

Ответ 2

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

Ответ 3

Вы можете использовать новый _reindex api для этого, вы даже можете установить новый индекс _mapping в индекс dest до запуска reindex, чтобы вы могли изменять свойства полей в вашем индексе.

Чтобы сделать переопределение и удалить свойство, вы можете сделать это:

POST /_reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
  },
  "script": {
    "inline": "ctx._source.remove('whatever')"
  }
}

если вы использовали бы это в сочетании с _ aliases API, вы можете изменять индексы без каких-либо "простоя"