#elasticsearch #duplicates
#elasticsearch #дубликаты
Вопрос:
Я хочу удалить все дублирующиеся документы в индексе. Я начал с попытки обнаружить дублирующиеся элементы с помощью следующего запроса.
Эластичный файл был раздавлен, потому java.lang.OutOfMemoryError: Java heap space
что . размер кучи составляет 32 ГБ и 500 000 000 документов
- как мне найти дублированные значения. группируйте по
item.category
иitem.profile
(оба определены как ключевое слово). - как удалить эти дублированные элементы?
GET /requests/_search
{
"size": 0,
"aggs": {
"duplicateCount": {
"terms": {
"field": "item.text",
"min_doc_count": 2
},
"aggs": {
"duplicateDecuments": {
"top_hits": {
}
}
}
}
}
}
Спасибо
Ответ №1:
Я бы написал внешний скрипт для запроса идентификаторов документов с нумерацией страниц и запустил несколько delete_by_query.
Вы можете использовать «раздел» в вашей агрегации, как описано в статье ниже, для разбивки ваших агрегатов на страницы. https://spoon-elastic.com/all-elastic-search-post/pagination-aggregation-elasticsearch /
Если у вас достаточно места, вы также можете использовать внешний индекс с переиндексацией. С помощью приемного трубопровода вы можете :
- создайте уникальный ключ (item.category — item.profile..) и используйте его как _id
- переиндексируйте в этом индексе. Это удалит дубликаты
- используйте этот новый индекс или пустой старый индекс и переиндексируйте его обратно.
Или другое решение — это :
- создайте уникальный ключ (item.category — item.profile..) и используйте его как _id
- переиндексируйте в этом индексе и сохраните только уникальный идентификатор, например _source.id
- используйте все идентификаторы для записи внешнего scipt для создания delete_by_query для удаления всех документов с этими идентификаторами.
помните, что :
- удаление в эластичном поиске — это мягкое удаление. потребуется время, прежде чем ES освободит место.
- чтобы сохранить хорошую производительность после большого удаления, лучше всего выполнить force_merge https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html