Ошибка индексации при отправке документа вasticsearch в spring-boot-starter-data -asticsearch - PullRequest
0 голосов
/ 10 февраля 2020

У меня возникают спорадические проблемы при отправке документов в индекс.

В результате иногда возникает следующая ошибка при попытке отправить документ в индекс. но если я отправлю другой документ сразу после того, как второй будет успешно отправлен без ошибок.

Я попытался найти во всем Интернете похожие проблемы, но это больше похоже на проблему с зависимостью, чем на Сам Elasticsearch.

Сообщение об ошибке следующее:

java.util.concurrent.ExecutionException: org.springframework.data.elasticsearch.ElasticsearchException: Error while index for request: index {[converterlog_test][_doc][d388d3be-2e9e-4474-a952-e4a6b146487f], 
source[{"logId":"d388d3be-2e9e-4474-a952-e4a6b146487f","date":"2020-02-10T13:32:24.138","output":"Compilation in progress...\nCompilation successful","filename":"CDNORNCNCINT02380","exitCode":0,"maybeError":false}]}
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at no.intility.CdrConverter.Controllers.CdrConverterController.startCdrConverter(CdrConverterController.java:65)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
...
Caused by: java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-0 [ACTIVE]
    at org.elasticsearch.client.RestClient$SyncResponseListener.get(RestClient.java:944)
    at org.elasticsearch.client.RestClient.performRequest(RestClient.java:233)
    at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1764)
    at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1734)
    at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1696)
    at org.elasticsearch.client.RestHighLevelClient.index(RestHighLevelClient.java:928)
    at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.index(ElasticsearchRestTemplate.java:694)
    ... 24 more

В моем проекте используются следующие классы / рамки / зависимости.

Зависимость

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <version>2.2.4.RELEASE</version>
</dependency>

Класс модели :

@Document(indexName = "#{ configBean.indexName }", type = "_doc")
public class ConverterLog {

    @Id @Field(type = FieldType.Text)
    private String logId;

    @Field(type = FieldType.Date)
    private String date;

    @Field(type = FieldType.Text)
    private String output;

    @Field(type = FieldType.Text)
    private String filename;

    @Field(type = FieldType.Integer)
    private int exitCode;

    @Field(type = FieldType.Boolean)
    private boolean maybeError;

    public ConverterLog(String output, String filename, int exitCode, boolean maybeError) {
        setDate(LocalDateTime.now(ZoneId.of("UTC")).toString());
        setLogId(UUID.randomUUID().toString());
        setOutput(output);
        setFilename(filename);
        setExitCode(exitCode);
        setMaybeError(maybeError);
    }

    ... Getters & setters

Репозиторий:

public interface ConverterLogRepository extends ElasticsearchRepository<ConverterLog, String> {

}

Служба:

@Service
public class ConverterLogService {

    private ConverterLogRepository converterLogRepository;

    public ConverterLogService(ConverterLogRepository converterLogRepository) {
        this.converterLogRepository = converterLogRepository;
    }

    public ConverterLog submitTerminalOutput(String terminalOutput, String filename, int exitcode, boolean maybeError)  {
        return converterLogRepository.index(new ConverterLog(terminalOutput, filename, exitcode, maybeError));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...