[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,因此 ElasticsearchTemplate 本身已被弃用。
[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
我认为Spring Data Elasticseach将需要在未来迁移到REST,根据Elasticsearch团队的声明,他们计划仅支持ES的HTTP通信。
希望它有帮助。