当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch Rest客户端与Spring数据Elasticsearch

葛学民
2023-03-14

我正在使用Spring boot和AWS elasticsearch服务。AWS Elasticsearch服务,仅提供REST接口。

Elasticsearch Rest客户端在这里。

简单地说,是否可以将REST客户端与Spring Data Elasticsearch一起使用?

换句话说,Spring Data Elasticsearch是否与Elasticsearch Rest客户端配合使用?

Spring Data Elasticsearch非常易于使用,模板提供了我需要的大部分功能。使用Elasicsearch Rest客户端,我必须自己实现所有功能。

共有3个答案

漆雕和雅
2023-03-14

无法对上述普泽梅克·诺瓦克的回答置评。如果您不想等待Spring数据ES 2.2。x使用高级Rest客户机,然后Spring Data Jest节省了时间。

根据他们的留档,您首先禁用默认的Spring Data ES自动配置

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

就这样——存储库现在将使用Jest的实现。如果您想使用Elasticsearch chTemboard,请确保您注入Elasticsearch chAction接口:

private final ElasticsearchOperations esTemplate;
周超英
2023-03-14

我认为elasticsearch的jest客户可以满足您的需求。https://github.com/searchbox-io/Jest/tree/master/jest.Jest是用于ElasticSearch的Java HTTP Rest客户端。它也有很好的文档,支持elasticsearch中的所有查询。

敖毅
2023-03-14

[2020年5月更新]

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

正如您可以阅读Spring数据Elasticsearch 4.0:

Spring Data Elasticsearch现在特别使用Elasticsearch 7、7.6.2。不再支持在6. x版本上运行的Elasticsearch集群。不建议使用Elasticsearch chTemboard类,因为它使用TransportClient访问Elasticsearch,该类本身自Elasticsearch版本7以来已被弃用。用户应切换到Elasticsearch chRestTemboard或ReactiveElasticsearch chTemboard。

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

根据文档(当然可能会更改,因为它不是最终版本,所以我将把它放在这里):

从Elasticsearch 7.0.0开始,著名的TransportClient已被弃用,预计将在Elasticsearch 8.0中删除。

2.1.高级REST客户端

Java高级REST客户端为TransportClient提供了一个直接的替换,因为它接受和返回非常相同的请求/响应对象,因此依赖于Elasticsearch核心项目。异步html" target="_blank">调用在客户端托管线程池上操作,并且需要在请求完成时通知回调。

示例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团队的声明,我认为Spring数据Elasticseach将来需要迁移到REST,他们计划只支持ES的HTTP通信。

希望有帮助。

 类似资料:
  • 我想通过ApacheSpark从Apache Hive中检索行,并将每一行放入Aerospike缓存。 这里有一个简单的案例。 我得到一个错误: 显然,我无法将序列化。我试图添加,这确实有效。但据了解,这种方法将所有内容加载到一个节点中。可能有大量的数据。所以,这不是选项。 处理此类问题的最佳做法是什么?

  • 顺便说一句,这些微服务只会通过中间件层互相交谈,我的意思是不需要用户凭据来允许授权(用户登录过程如Facebook)。 我在Internet上寻找了一些示例,展示了如何创建一个授权和资源服务器来管理这种通信。然而,我只是找到了一些例子,解释了如何使用用户凭据(三条腿)来实现它。 有没有人有在Spring Boot和Oauth2中如何做的样例?如果有可能提供更多关于所用范围的详细信息,令牌交换将不胜

  • 我有一个spring boot 2.2.5应用程序,并计划使用AWS elasticsearch,其版本为7.4。有人能告诉我是使用Spring数据elasticsearch还是elasticsearch库吗?我在SO上看到一些帖子谈到了这一点,但它们都很老了,并且谈到restHighLevel客户端不受支持,而现在spring data elasticsearch 4中的情况并非如此。x、 无论

  • 我注意到Rest客户端上有两个指南:MicroProfile和Vertx。既然微文件支持异步,那么使用基于Vertx的Rest客户端有什么好处?

  • 长连接服务(TCP、WebSocket)支持向客户端推送数据,具体用法https://doc.imiphp.com/utils/Server.html

  • 长连接服务(TCP、WebSocket)支持向客户端推送数据,具体用法https://doc.imiphp.com/utils/Server.html