英文原文:https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-nosql.html
GitHub:https://github.com/jijicai/Spring/tree/master/spring-boot
32.6、Elasticsearch
Elasticsearch 是一个开源、分布式、RESTful 的搜索和分析引擎。Spring Boot 为 Elasticsearch 提供了基本的自动配置。
Spring Boot 支持几个 HTTP 客户端:
(1)官方的 Java “Low Level” 和 “High Level” REST 客户端
(2)Jest(https://github.com/searchbox-io/Jest )
Spring Data Elasticsearch 仍在使用传输客户端,你可以开始使用 spring-boot-starter-data-elasticsearch “Starter”。
32.6.1、通过 REST 客户端连接到 Elasticsearch
Elasticsearch 提供了两个不同的 REST 客户端,你可以使用它们来查询集群:“Low Level” 客户端和“High Level” 客户端。
如果类路径上有 org.elasticsearch.client:elasticsearch-rest-client 依赖项,Spring Boot 将自动配置并注册一个 RestClient bean,默认目标是 localhost:9200。你可以进一步调整 RestClient 的配置方式,如下面示例所示:
spring.elasticsearch.rest.uris=https://search.example.com:9200
spring.elasticsearch.rest.username=user
spring.elasticsearch.rest.password=secret
你还可以注册任意数量的 bean,以实现 RestClientBuilderCustomizer 来进行更高级的自定义。要完全控制注册,定义一个 RestClient bean。
如果在类路径上有 org.elasticsearch.client:elasticsearch-rest-high-level-client 依赖项,Spring Boot 将自动配置 RestHighLevelClient ,它封装任何现有的 RestClient bean,重用其 HTTP 配置。
32.6.2、使用 Jest 连接到 Elasticsearch
如果在类路径上有 Jest,则可以插入一个自动配置的 JestClient,默认情况下该 JestClient 以 localhost:9200 为目标。你可以进一步调整客户端的配置方式,如下面示例所示:
spring.elasticsearch.jest.uris=https://search.example.com:9200
spring.elasticsearch.jest.read-timeout=10000
spring.elasticsearch.jest.username=user
spring.elasticsearch.jest.password=secret
你还可以注册任意数量的 bean,这些 bean 实现 HttpClientConfigBuilderCustomizer 以进行更高级的自定义。以下示例调整其他 HTTP 设置:
static class HttpSettingsCustomizer implements HttpClientConfigBuilderCustomizer {
@Override
public void customize(HttpClientConfig.Builder builder) {
builder.maxTotalConnection(100).defaultMaxTotalConnectionPerRoute(5);
}
}
要完全控制注册,请定义一个 JestClient bean。
32.6.3、使用 Spring Data 连接到 Elasticsearch
要连接到 Elasticsearch,必须提供一个或多个群集节点的地址。可以通过将 spring.data.elasticsearch.cluster-nodes 属性设置为逗号分隔的 host:port 列表来指定地址。有了这个配置,ElasticsearchTemplate 或 TransportClient 可以像任何其他 Spring bean 一样被注入,如下面示例所示:
spring.data.elasticsearch.cluster-nodes=localhost:9300
@Component
public class MyBean {
private final ElasticsearchTemplate template;
public MyBean(ElasticsearchTemplate template) {
this.template = template;
}
// ...
}
如果添加自己的 ElasticsearchTemplate 或 TransportClient @Bean,它将替换默认值。
32.6.4、Spring Data Elasticsearch 存储库
Spring Data 包括对 Elasticsearch 的存储库支持。与前面讨论的 JPA 存储库一样,基本原则是根据方法名为你自动构造查询。
事实上,Spring Data JPA 和 Spring Data Elasticsearch 共享相同的公共基础设施。你可以从前面的 JPA 示例开始,假设 City 现在是一个 Elasticsearch @Document 类,而不是一个 JPA @Entity,那么它的工作方式是相同的。
提示:有关 Spring Data Elasticsearch 的完整详细信息,请参阅参考文档。
32.7、Cassandra
Cassandra 是一个开放源代码的分布式数据库管理系统,旨在跨许多商业服务器处理大量数据。Spring Boot 为 Cassandra 提供了自动配置,并在此基础上提供了 Spring Data Cassandra 提供的抽象。有一个 spring-boot-starter-data-cassandra “Starter”,用于以方便的方式收集依赖项。
32.7.1、连接到 Cassandra
你可以注入一个自动配置的 CassandraTemplate 或一个 Cassandra Session 实例,就像注入任何其他 Spring Bean一样。spring.data.cassandra.* 属性可用于自定义连接。通常,你会提供 keyspace-name 和 contact-points 属性,如下面示例所示:
spring.data.cassandra.keyspace-name=mykeyspace
spring.data.cassandra.contact-points=cassandrahost1,cassandrahost2
你还可以注册任意数量的 bean,以实现 ClusterBuilderCustomizer 来进行更高级的自定义。
下面的代码列表展示了如何注入 Cassandra bean:
@Component
public class MyBean {
private CassandraTemplate template;
@Autowired
public MyBean(CassandraTemplate template) {
this.template = template;
}
// ...
}
如果添加 CassandraTemplate 类型的 @Bean,它将替换默认值。
32.7.2、Spring Data Cassandra 存储库
Spring Data 包括对 Cassandra 的基本存储库支持。目前,这比前面讨论的 JPA 存储库更受限制,需要使用 @Query 注解 finder 方法。
提示:有关 Spring Data Cassandra 的完整详细信息,请参阅参考文档。(https://docs.spring.io/spring-data/cassandra/docs/ )
本文暂时没有评论,来添加一个吧(●'◡'●)