Spring Data Elasticsearch Массовое индексирование/удаление – миллионы записейJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Data Elasticsearch Массовое индексирование/удаление – миллионы записей

Сообщение Anonymous »

Я использую Spring Data Elasticsearch 4.2.5, у нас есть задание, которое выполняет ETL (извлечение, преобразование и загрузку данных) в определенную таблицу базы данных. Я индексирую эти данные с помощью Elasticsearch во время выполнения задания. Данные будут в миллионах записей и более. В настоящее время я делаю индекс на каждой итерации. Я читал, что использование индекса elasticsearch на каждой итерации может занять некоторое время. Я хотел использовать что-то вроде массового индекса, но для этого мне нужно добавить объект indexQuery в список. Добавление миллионов записей в список и выполнение массового индексирования может вызвать проблемы с памятью.
Мне нужно применить аналогичный процесс для удаления. Когда записи удаляются на основе какого-то общего идентификатора, мне нужно удалить связанные эластичные документы, и это также будет в миллионах и более.
Можно ли как-нибудь очень быстро индексировать/удалять для этого требование? Любая помощь будет очень признательна, и поправьте меня, если мое понимание неверно.
ИНДЕКСИРОВАНИЕ
for (Map.Entry key : objectDetailsHashMap.entrySet()) {
indexDocument(elasticsearchOperations, key, oPath);
// other code to insert data in db table...
}

private void indexDocument(ElasticsearchOperations elasticsearchOperations,
Map.Entry key, String oPath) {
String docId = "" + key.getValue().getCatalogId() + key.getValue().getObjectId();

byte[] nameBytes = key.getValue().getName();
byte[] physicalNameBytes = key.getValue().getPhysicalName();
byte[] definitionBytes = key.getValue().getDefinition();
byte[] commentBytes = key.getValue().getComment();

IndexQuery indexQuery = new IndexQueryBuilder()
.withId(docId)
.withObject(new MetadataSearch(
key.getValue().getObjectId(),
key.getValue().getCatalogId(),
key.getValue().getParentId(),
key.getValue().getTypeCode(),
key.getValue().getStartVersion(),
key.getValue().getEndVersion(),
nameBytes != null ? new String(nameBytes, StandardCharsets.UTF_8) : "-",
physicalNameBytes != null ? new String(physicalNameBytes, StandardCharsets.UTF_8) : "-",
definitionBytes != null ? new String(definitionBytes, StandardCharsets.UTF_8) : "-",
commentBytes != null ? new String(commentBytes, StandardCharsets.UTF_8) : "-",
oPath
))
.build();

elasticsearchOperations.index(indexQuery, IndexCoordinates.of("portal_idx"));
}

УДАЛЕНИЕ
private void deleteElasticDocuments(String catalogId) {
String queryText = martServerContext.getQueryCacheInstance().getQuery(QUERY_PORTAL_GET_OBJECTS_IN_PORTAL_BY_MODEL);
MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource();
mapSqlParameterSource.addValue("cId", Integer.parseInt(catalogId));
namedParameterJdbcTemplate.query(queryText, mapSqlParameterSource, (resultSet -> {
int objectId = resultSet.getInt(O_ID);
String docId = catalogId + objectId;
elasticsearchOperations.delete(docId, IndexCoordinates.of("portal_idx"));
}));
}


Подробнее здесь: https://stackoverflow.com/questions/693 ... of-records
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Оптимизация проекта .NET + Angular, который извлекает миллионы записей из базы данных [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Spring data elasticsearch массовый индекс и удаление
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Индексирование в Elasticsearch локально с помощью biosentvec TimeoutError
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Полный документ Elasticsearch или постраничное индексирование текста
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Массовое обновление таймсерий C# MongoDB с добавлением повторяющихся записей
    Гость » » в форуме C#
    0 Ответы
    32 Просмотры
    Последнее сообщение Гость

Вернуться в «JAVA»