Ошибка при использовании Elasticsearch с Spring Boot - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь реализовать Elasticsearch в приложении загрузки Spring, я выполнил шаги, описанные в документации , и все работает нормально, когда дело доходит до интеграции клиента (с использованием рекомендованного клиента Hight Level Rest), сопоставление или индексация ... Но когда я пытаюсь запросить документы, я получаю следующую ошибку:

java.lang.NumberFormatException: For input string: "-Je513EBi1vVkAiBdanX"

Моя конфигурация:

@Configuration
@EnableElasticsearchRepositories
public class ElasticConfig extends AbstractElasticsearchConfiguration {

    @Bean
    public RestHighLevelClient elasticsearchClient() {
        final ClientConfiguration configuration = ClientConfiguration.localhost();
        RestHighLevelClient client = RestClients.create(configuration).rest();
        return client;
    }

    @Bean
    public ElasticsearchRestTemplate elasticsearchTemplate() {
        return new ElasticsearchRestTemplate(elasticsearchClient());
    }
}

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

@Repository
public interface UserRepository extends ElasticsearchRepository<User, Long> {
    List<User> findByName(String name);
}

Моя служба:

public List<User> getUsers(String qry){
    return userRepository.findByName(qry);
}

Моя модель:

@Document(indexName = "users")
public class User {

    @Id private Long id;
    private String name;
    private String username;
    private String avatar;
    private String bio;
    private boolean checked;

    public User() { }

    public User(
            @JsonProperty("id") Long id,
            @JsonProperty("name") String name,
            @JsonProperty("username") String username,
            @JsonProperty("avatar") String avatar,
            @JsonProperty("bio") String bio,
            @JsonProperty("checked") boolean checked) {
        this.id = id;
        this.name = name;
        this.username = username;
        this.avatar = avatar;
        this.bio = bio;
        this.checked = checked;
    }

    // Getters
    // Setters
}

1 Ответ

0 голосов
/ 29 мая 2020

Можете ли вы подтвердить версию Spring Data и Elasticsearch, которую вы используете? Кроме того, меня немного беспокоит то, как вы реализовали свой RestHighLevelClient. Вы говорите о локальном хосте, а как насчет порта? Ниже приведен фрагмент рабочего кода:

    @Bean
public RestHighLevelClient elasticRestClient () {
    String[] httpHosts = httpHostsProperty.split(";");
    HttpHost[] httpHostsAsArray = new HttpHost[httpHosts.length];
    int index = 0;

    for (String httpHostAsString : httpHosts) {
        HttpHost httpHost = new HttpHost(httpHostAsString.split(":")[0], new Integer(httpHostAsString.split(":")[1]), "http");
        httpHostsAsArray[index++] = httpHost;
    }

    RestClientBuilder restClientBuilder = RestClient.builder(httpHostsAsArray)
            .setRequestConfigCallback(builder -> builder
                    .setConnectTimeout(connectTimeOutInMs)
                    .setSocketTimeout(socketTimeOutInMs)
            );

    return new RestHighLevelClient(restClientBuilder);
}
...