Elasticsearch REST客户端与Spring数据Elasticsearch

问题描述 投票:12回答:2

我在我使用Spring引导和AWS elasticsearch服务的情况。 AWS Elasticsearch服务,只提供REST接口。

Elasticsearch REST客户端是here

简单来说,就是有可能使用REST客户端与Spring数据Elasticsearch?

换句话说,春天在什么数据Elasticsearch可与Elasticsearch REST客户端?

春天的数据Elasticsearch是非常容易使用和模板提供了非常大多数的功能,我需要。随着Elasicsearch REST客户端我要实现所有的功能自己。

java amazon-web-services elasticsearch spring-boot spring-data-elasticsearch
2个回答
23
投票

[2019月更新]

一看到现在3.2.0 M1春数据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);

[原创答案]

目前,春数据Elasticsearch不支持通过REST API的通信。他们所使用的传输客户端。

有春天数据Elasticsearch(这个家伙需要它AWS和你一样),其中JEST库使用和REST通信是由单独的叉:

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

你会发现在以下打勾春数据Elasticsearch的有趣的讨论:

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

我觉得春天数据Elasticsearch需要根据从Elasticsearch团队,他们正计划支持ES仅HTTP通信语句迁移到REST的未来。

希望能帮助到你。


1
投票

我认为elasticsearch开玩笑的客户端将成为你的目的。 https://github.com/searchbox-io/Jest/tree/master/jest。笑话是ElasticSearch一个Java HTTP REST客户端。它有一个非常好的文档也和有在elasticsearch所有查询的支持。


0
投票

无法在Przemek诺瓦克的回答上述评论。如果你不想等待春天的数据ES 2.2.x中使用高级别REST客户端,然后Spring Data Jest节省了一天。

按照他们的文档,你首先禁用默认春数据ES自动配置:

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

这就是它 - 库现在将使用玩笑的实现。如果你想使用ElasticsearchTemplate,请确保你注入ElasticsearchOperations接口,而不是:

private final ElasticsearchOperations esTemplate;
© www.soinside.com 2019 - 2024. All rights reserved.