Тайм-аут массовой вставки 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 за раз для целей тестирования, но это тоже не работает.

0 ответов

Другие вопросы по тегам