[2020 年 5 月更新]
https://spring.io/blog/2020/05/27/what-s-new-in-spring-data-elasticsearch-4-0
如您所见,Spring Data Elasticsearch 4.0:
Spring Data Elasticsearch 现在特别使用 Elasticsearch 7、7.6.2。不再支持在 6.x 版本上运行的 Elasticsearch 集群。不推荐使用 ElasticsearchTemplate 类,因为它使用 TransportClient 访问 Elasticsearch,自 Elasticsearch 版本 7 起,它本身已被弃用。用户应切换到 ElasticsearchRestTemplate 或 ReactiveElasticsearchTemplate。
[2019 年 2 月更新]
现在看到 3.2.0 M1 Spring Data Elasticsearch 支持 HTTP 客户端 (https://docs.spring.io/spring-data/elasticsearch/docs/3.2.0.M1/reference/html/#reference)
根据文档(当然可以更改,因为它不是最终版本,所以我会放在这里):
众所周知的 TransportClient 自 Elasticsearch 7.0.0 起已弃用,预计将在 Elasticsearch 8.0 中删除。
2.1。高级 REST 客户端
Java 高级 REST 客户端直接替代了 TransportClient,因为它接受并返回完全相同的请求/响应对象,因此依赖于 Elasticsearch 核心项目。异步调用在客户端管理的线程池上进行操作,并且需要在请求完成时通知回调。
示例 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 Elasticsearch 不支持通过 REST API 进行通信。他们正在使用传输客户端。
Spring Data Elasticsearch 有一个单独的分支(AWS 和你一样需要它),其中使用 JEST 库并通过 REST 进行通信:
https://github.com/VanRoy/spring-data-jest
你会在 Spring Data Elasticsearch 的下面打勾下找到有趣的讨论:
https://jira.spring.io/browse/DATAES-220
根据 Elasticsearch 团队的声明,他们计划仅支持 ES 的 HTTP 通信,我认为 Spring Data Elasticseach 未来需要迁移到 REST。
希望对你有帮助。