31.4 Gemfire
Spring数据Gemfire为访问Pivotal Gemfire数据管理平台提供了方便的Spring友好工具 。有一
个 spring-boot-starter-data-gemfire “Starter”用于以方便的方式收集依赖项。目前没有Gemfire的自动配置支持,但您可以使用单个注
释启用Spring数据存储库 :@EnableGemfireRepositories 。
31.5 Solr
Apache Solr是一个搜索引擎。Spring Boot为Solr 5客户端库提供了基本的自动配置,并在Spring Data Solr提供了它上面的抽象。有一
个 spring-boot-starter-data-solr “Starter”用于以方便的方式收集依赖项。
31.5.1连接到Solr
您可以像注射任何其他Spring bean一样注入自动配置的 SolrClient 实例。默认情况下,实例尝试连接到 localhost:8983/solr 的服务器。
以下示例显示了如何注入Solr bean:
@Component
public class MyBean {
private SolrClient solr;
@Autowired
public MyBean(SolrClient solr) {
this.solr = solr;
}
// ...
}
如果您添加 SolrClient 类型的 @Bean ,它将替换默认值。
31.5.2 Spring数据Solr存储库
Spring数据包括Apache Solr的存储库支持。与前面讨论的JPA存储库一样,基本原则是根据方法名称自动构建查询。
实际上,Spring Data JPA和Spring Data Solr共享相同的公共基础结构。您可以从前面获取JPA示例,假设 City 现在是 @SolrDocument 类而
不是JPA @Entity ,它的工作方式相同。
31.6 Elasticsearch
Elasticsearch是一个开源,分布式,RESTful搜索和分析引擎。Spring Boot为Elasticsearch提供基本的自动配置。
Spring Boot支持多个HTTP客户端:
官方Java“低级”和“高级”REST客户端
笑话
Spring Data Elasticsearch仍在使用传输客户端 ,您可以使用 spring-boot-starter-data-elasticsearch “Starter”开始使用它。
31.6.1 REST客户端连接到Elasticsearch
Elasticsearch提供了 两个 可用于查询集群的REST客户端:“低级”客户端和“高级”客户端。
如果您对类路径具有 org.elasticsearch.client:elasticsearch-rest-client 依赖关系,Spring Boot将自动配置并注册默认目标
为 localhost:9200 的 RestClient bean。您可以进一步调整 RestClient 的配置方式,如以下示例所示:
spring.elasticsearch.rest.uris=http://search.example.com:9200
spring.elasticsearch.rest.username=user
spring.elasticsearch.rest.password=secret
您还可以注册实现 RestClientBuilderCustomizer 的任意数量的beans以进行更高级的自定义。要完全控制注册,请定义 RestClient
bean。
如果您对类路径具有 org.elasticsearch.client:elasticsearch-rest-high-level-client 依赖关系,Spring Boot将自动配
置 RestHighLevelClient ,其包装任何现有的 RestClient bean,重用其HTTP配置。
31.6.2使用Jest连接到Elasticsearch
如果类路径上有 Jest ,则可以注入一个自动配置的 JestClient ,默认情况下为 localhost:9200 。您可以进一步调整客户端的配置方式,如
以下示例所示:
spring.elasticsearch.jest.uris=http://search.example.com:9200
spring.elasticsearch.jest.read-timeout=10000
spring.elasticsearch.jest.username=user
spring.elasticsearch.jest.password=secret
您还可以注册实现 HttpClientConfigBuilderCustomizer 的任意数量的beans以进行更高级的自定义。以下示例调整其他HTTP设置:
static class HttpSettingsCustomizer implements HttpClientConfigBuilderCustomizer {
@Override
public void customize(HttpClientConfig.Builder builder) {
builder.maxTotalConnection(100).defaultMaxTotalConnectionPerRoute(5);
}
}
要完全控制注册,请定义 JestClient bean。
31.6.3使用Spring数据连接到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 ,则会替换默认值。
31.6.4 Spring数据Elasticsearch存储库
Spring数据包括Elasticsearch的存储库支持。与前面讨论的JPA存储库一样,基本原则是根据方法名称自动为您构建查询。
事实上,Spring Data JPA和Spring Data Elasticsearch共享相同的通用基础架构。您可以从之前获取JPA示例,假设 City 现在是Elasticsearch
@Document 类而不是JPA @Entity ,它的工作方式相同。