O cliente ElasticSearch faz uso Spring Data-ElasticSearch sob o capô?

alabid:

Eu quero usar Primavera Dados ElasticSearch no meu projeto e eu vi isso:

O TransportClient bem conhecido é suspenso a partir de ElasticSearch 7.0.0 e é esperado para ser removido em ElasticSearch 8,0.

Minha abordagem é apenas para usar o Spring Dados ElasticSearch fazer operações CRUD (ORM-like), e Alto Nível cliente REST para pesquisar e todo o resto. Então, eu quero saber qual cliente é o ElasticsearchRepository usando para executar suas operações, e se o código não será válido na versão 8.0 do ElasticSearch.
Ainda é uma boa decisão para usar a versão 3.1.5?

PJMeisch:

Como sempre, depende.

Sobre ElasticSearch: a versão atual é 6.7.0, TransportClient estará disponível em ES7 bem embora desaconselhável, mas só será removido em ES8, para que haja bastante tempo para usá-lo - embora você deve pensar em substituí-lo.

Sobre primavera-data-ElasticSearch:

  • quando se usa ElasticsearchTemplate, você está usando o TransportClient.
  • quando se utiliza ElasticsearchRestTemplatevocê estiver usando o RESTClient (disponível em 3.2.0).
  • quando se utiliza um padrão ElasticsearchRepositoryque você está usando o TransportClient.
  • quando se utiliza um repositório personalizado estendendo-se por exemplo SimpleElasticsearchRepositorycomo mostrado abaixo você estiver usando o RESTClient.

amostra de classe de configuração :

@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());
    }
}

amostra de classe repositório:

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

amostra de classe 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;
    }
}

Assim, ao usar 3.1.x, você só tem a TransportClient, com 3.2.x, atualmente disponível como marco M2, você pode usar o RESTClient também.

Certifique-se de que o seu application.yaml (ou .properties) não tem qualquer um dos spring.data.elasticsearch.cluster- * propriedades, como estes irão injetar o ElasticsearchTemplate (Transportes Cliente).

E você vai precisar para ambos conjunto a versão correta do ElasticSearch e da primavera-data-ElasticSearch em sua pom (trecho):

<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>

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=177155&siteId=1
Recomendado
Clasificación