Ответ 1
Вы не можете этого сделать. Просто забудьте, что это значение существует...;-) Если вам действительно нужно удалить его, вам придется переиндексировать свои документы.
Я пытаюсь найти подход для удаления всех записей для определенного свойства в индексе 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
будут удалены с помощью индекса.
Вы не можете этого сделать. Просто забудьте, что это значение существует...;-) Если вам действительно нужно удалить его, вам придется переиндексировать свои документы.
В настоящее время невозможно удалить свойство из сопоставления. Чтобы удалить все значения свойства из всех записей, вам необходимо повторно проиндексировать все записи с удаленным этим свойством.
Вы можете использовать новый _reindex
api для этого, вы даже можете установить новый индекс _mapping
в индекс dest до запуска reindex, чтобы вы могли изменять свойства полей в вашем индексе.
Чтобы сделать переопределение и удалить свойство, вы можете сделать это:
POST /_reindex
{
"source": {
"index": "twitter"
},
"dest": {
"index": "new_twitter",
},
"script": {
"inline": "ctx._source.remove('whatever')"
}
}
если вы использовали бы это в сочетании с _ aliases API, вы можете изменять индексы без каких-либо "простоя"