Какой клиент Elasticsearch использует Spring-Data-Elasticsearch?

Я хочу использовать Spring Data Elasticsearch в своем проекте, и я увидел это:

The well known TransportClient is deprecated as of Elasticsearch 7.0.0 and is expected to be removed in Elasticsearch 8.0.

Мой подход заключается в использовании Spring Data Elasticsearch только для выполнения операций CRUD (ORM-подобных) и клиента REST высокого уровня для поиска и всего остального. Поэтому я хочу знать, какой клиент использует ElasticsearchRepository для выполнения своих операций, и будет ли код больше недействителен в версии 8.0 Elasticsearch.
Это все еще хорошее решение использовать версию 3.1.5?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
7
0
7 569
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

да, он действительно использует транспортный клиент

Ответ принят как подходящий

Как всегда, это зависит.

Об Elasticsearch: текущая версия 6.7.0, TransportClient будет доступен и в ES7, хотя и устарел, но будет удален только в ES8, так что есть достаточно времени, чтобы его использовать — хотя вам следует подумать о его замене.

О spring-data-elasticsearch:

  • при использовании ElasticsearchTemplate вы используете TransportClient.
  • при использовании ElasticsearchRestTemplate вы используете RestClient (доступно в 3.2.0).
  • при использовании по умолчанию ElasticsearchRepository вы используете TransportClient.
  • при использовании расширения пользовательского репозитория, например SimpleElasticsearchRepository, как показано ниже, вы используете RestClient.

пример класса конфигурации:

@SpringBootApplication
@EnableElasticsearchRepositories
public class SpringdataElasticTestApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringdataElasticTestApplication.class, args);
    }

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

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

пример класса репозитория:

public interface PersonRepository extends ElasticsearchRepository<Person, Long> {
}

пример класса POJO:

@Document(indexName = "person")
public class Person {
    @Id
    private Long id;
    private String lastName;
    private String firstName;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
}

Таким образом, при использовании 3.1.x у вас есть только TransportClient, с 3.2.x, в настоящее время доступный как веха M2, вы также можете использовать RestClient.

Убедитесь, что ваш application.yaml (или .properties) не имеет каких-либо свойств spring.data.elasticsearch.cluster-*, так как они будут внедрять шаблон ElasticsearchTemplate (транспортный клиент).

И вам нужно будет установить правильную версию elasticsearch и spring-data-elasticsearch в вашем pom (отрывок):

<properties>
    <elasticsearch.version>6.6.1</elasticsearch.version>
</properties>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-elasticsearch</artifactId>
        <!-- need 3.2.0 for REST client-->
        <version>3.2.0.M2</version>
    </dependency>

<repository>
    <id>Spring-Framework-Milestone</id>
    <name>Spring Framework Milestone</name>
    <url>http://maven.springframework.org/milestone/</url>
</repository>

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