Тайм-аут массовой вставки JAVA SDK эластичного поиска
Я пытаюсь индексировать документы массово, по какой-то причине я продолжаю получать исключение тайм-аута. Однако, когда я пытаюсь проиндексировать один документ, он работает отлично.
Вот код для индексации одного документа
Reader reader = new StringReader(jsonString);
IndexRequest<JsonData> request = IndexRequest.of(i -> i.index(indexName).withJson(reader));
esClient.index(request).whenComplete((response, exception) ->
{
if (exception != null)
{
System.out.println("Exception = " + exception);
exception.printStackTrace();
}
});
Вот код для BulkRequests
BulkRequest.Builder builder = new BulkRequest.Builder();
builder.timeout(Time.of(time -> time.time("2m")));
JsonpMapper jsonpMapper = logManager.getMapper();
JsonProvider jsonProvider = jsonpMapper.jsonProvider();
for (EsLog log: logs) {
String logJson;
try {
logJson = mapper.writeValueAsString(log);
} catch (JsonProcessingException e) {
e.printStackTrace();
logJson = "{}";
}
Reader reader = new StringReader(logJson);
builder.operations(
op -> op.index(
idx -> idx.index(indexName)
.id(UUID.randomUUID().toString())
.document(JsonData.from(jsonProvider.createParser(reader), jsonpMapper))
)
);
}
esClient.bulk(builder.build()).whenComplete(((bulkResponse, exception) -> {
if (exception != null) {
System.out.println("Exception : " + exception.getMessage());
exception.printStackTrace();
} else {
for (BulkResponseItem res: bulkResponse.items()) {
System.out.println("=====");
System.out.println(res.result());
System.out.println(res.index());
System.out.println(res.id());
System.out.println("=====");
}
}
}));
У меня были некоторые ошибки при использовании POJO, поэтому я следовал решению отсюда для массовых запросов https://discuss.elastic.co/t/java-8-1-bulk-request/302423/7 .
Код для индексации одного документа работает должным образом, но код массового индексирования вызывает исключение тайм-аута. Я также пытаюсь вставить только 10 за раз для целей тестирования, но это тоже не работает.