programing

스프링 데이터 탄력적 검색을 사용한 탄력적 검색 Rest 클라이언트

goodsources 2023. 6. 25. 18:46
반응형

스프링 데이터 탄력적 검색을 사용한 탄력적 검색 Rest 클라이언트

저는 스프링부트와 AWS 탄력검색 서비스를 이용하고 있는 상황입니다.REST 인터페이스만 제공하는 AWS Elastic 검색 서비스입니다.

탄력적인 검색 Rest Client가 여기 있습니다.

간단히, Spring Data Elastic search로 REST 클라이언트를 사용할 수 있습니까?

즉, Spring Data Elasticsearch는 Elasticsearch Rest 클라이언트에서 작동합니까?

Spring Data Elastic 검색은 매우 사용하기 쉽고 템플릿은 제가 필요로 하는 가장 많은 기능을 제공합니다.Elasicsearch Rest 클라이언트에서는 모든 기능을 직접 구현해야 합니다.

[2020년 5월 업데이트]

https://spring.io/blog/2020/05/27/what-s-new-in-spring-data-elasticsearch-4-0

Spring Data Elastic 검색 4.0에서 확인할 수 있습니다.

Spring Data Elastic search는 이제 Elastic search 7, 특히 7.6.2를 사용합니다.6.x 버전에서 실행되는 탄력적인 검색 클러스터는 더 이상 지원되지 않습니다.ElasticsearchTemplate 클래스는 TransportClient를 사용하여 Elasticsearch에 액세스하기 때문에 더 이상 사용되지 않습니다. Elasticsearch 버전 7.+ 사용자는 ElasticsearchRestTemplate 또는 ReactiveElasticsearchTemplate로 전환해야 합니다.

[2019년 2월 업데이트]

A 이제 3.2.0 M1 Spring Data Elastic 검색이 HTTP 클라이언트를 지원합니다(https://docs.spring.io/spring-data/elasticsearch/docs/3.2.0.M1/reference/html/ #reference).

설명서에 따르면 (최종 버전이 아니기 때문에 당연히 변경될 수 있으므로 여기에 추가하겠습니다.)

잘 알려진 TransportClient는 Elasticsearch 7.0.0에서 더 이상 사용되지 않으며 Elasticsearch 8.0에서 제거될 것으로 예상됩니다.

고급 REST 고객

Java High Level REST Client는 Transport Client가 동일한 요청/응답 개체를 수락하고 반환하므로 Elastic search 핵심 프로젝트에 의존하므로 Transport Client를 직접 대체할 수 있습니다.비동기 호출은 클라이언트 관리 스레드 풀에서 작동하며 요청이 완료되면 콜백에 통지해야 합니다.

예 49.고급 REST 클라이언트

static class Config {

  @Bean
  RestHighLevelClient client() {

    ClientConfiguration clientConfiguration = ClientConfiguration.builder() 
      .connectedTo("localhost:9200", "localhost:9201")
      .build();

    return RestClients.create(clientConfiguration).rest(); 
  }
}

// ...

IndexRequest request = new IndexRequest("spring-data", "elasticsearch", randomID())
  .source(singletonMap("feature", "high-level-rest-client"))
  .setRefreshPolicy(IMMEDIATE);

IndexResponse response = client.index(request);

[원답]

현재 Spring Data Elastic search는 REST API에 의한 통신을 지원하지 않습니다.그들은 전송 클라이언트를 사용하고 있습니다.

JEST 라이브러리를 사용하고 REST를 통해 통신을 수행하는 Spring Data Elastic 검색(AWS를 위해 필요한 사용자)의 별도 분기가 있습니다.

https://github.com/VanRoy/spring-data-jest

Spring Data Elastic search의 다음 체크 표시 아래에서 흥미로운 토론을 확인할 수 있습니다.

https://jira.spring.io/browse/DATAES-220

ES용 HTTP 통신만 지원할 계획이라는 Elastic search 팀의 진술에 따르면 Spring Data Elastic 각각은 향후 REST로 마이그레이션해야 할 것 같습니다.

도움이 되길 바랍니다.

탄력적인 검색을 위한 농담 고객이 당신의 목적에 부합할 것이라고 생각합니다.https://github.com/searchbox-io/Jest/tree/master/jest .Jest는 ElasticSearch용 Java HTTP Rest 클라이언트입니다.또한 매우 좋은 문서를 가지고 있으며 탄력적인 검색에서 모든 쿼리를 지원합니다.

위의 Przemek Nowak의 답변에 대해 언급할 수 없습니다.Spring Data ES 2.2.x가 High Level Rest Client를 사용할 때까지 기다리지 않으려면 Spring Data Jest가 하루를 저장합니다.

설명서에 따라 먼저 기본 Spring Data ES 자동 구성을 비활성화합니다.

@SpringBootApplication(exclude = {
    ElasticsearchAutoConfiguration.class, 
    ElasticsearchDataAutoConfiguration.class
})

이상입니다. 이제 저장소에서 Jest의 구현을 사용합니다.그리고 만약 당신이 그것을 사용하고 싶다면.ElasticsearchTemplate 주사를 합니다.ElasticsearchOperations대신 인터페이스:

private final ElasticsearchOperations esTemplate;

언급URL : https://stackoverflow.com/questions/45134811/elasticsearch-rest-client-with-spring-data-elasticsearch

반응형