Spring 访问 Elasticsearch
# Spring 访问 Elasticsearch
# 简介
Elasticsearch (opens new window) 是一个开源的、分布式的搜索和分析引擎。
# 通过 REST 客户端连接 Elasticsearch
如果在 classpath 路径下存在 org.elasticsearch.client:elasticsearch-rest-client
jar 包,Spring Boot 会自动配置并注册一个 RestClient
Bean,它的默认访问路径为:localhost:9200
。
你可以使用如下方式进行定制:
spring.elasticsearch.rest.uris=http://search.example.com:9200
spring.elasticsearch.rest.username=user
spring.elasticsearch.rest.password=secret
您还可以注册实现任意数量的 RestClientBuilderCustomizer
bean,以进行更高级的定制。要完全控制注册,请定义 RestClient
bean。
如果 classpath 路径有 org.elasticsearch.client:elasticsearch-rest-high-level-client
jar 包,Spring Boot 将自动配置一个 RestHighLevelClient
,它包装任何现有的 RestClient
bean,重用其 HTTP 配置。
# 通过 Jest 连接 Elasticsearch
如果 classpath 上有 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
bean,以进行更高级的定制。以下示例调整为其他 HTTP 设置:
static class HttpSettingsCustomizer implements HttpClientConfigBuilderCustomizer {
@Override
public void customize(HttpClientConfig.Builder builder) {
builder.maxTotalConnection(100).defaultMaxTotalConnectionPerRoute(5);
}
}
要完全控制注册,请定义 JestClient
bean。
# 通过 Spring Data 访问 Elasticsearch
要连接到 Elasticsearch,您必须提供一个或多个集群节点的地址。可以通过将 spring.data.elasticsearch.cluster-nodes
属性设置为以逗号分隔的 host:port
列表来指定地址。使用此配置,可以像任何其他 Spring bean 一样注入 ElasticsearchTemplate
或 TransportClient
,如以下示例所示:
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
,就会替换默认的配置。
# Elasticsearch Repositories
Spring Data 包含对 Elasticsearch 的 repository 支持。基本原则是根据方法名称自动为您构建查询。
事实上,Spring Data JPA 和 Spring Data Elasticsearch 共享相同的通用基础架构。
# 源码
使用方法:
mvn clean package
cd target
java -jar spring-boot-data-elasticsearch.jar
# 版本
Spring 和 Elasticsearch 匹配版本:
Spring Data Elasticsearch | Elasticsearch | Spring Framework | Spring Boot |
---|---|---|---|
5.0.x | 8.5.3 | 6.0.x | 3.0.x |
4.4.x | 7.17.3 | 5.3.x | 2.7.x |
4.3.x | 7.15.2 | 5.3.x | 2.6.x |
4.2.x[1 (opens new window)] | 7.12.0 | 5.3.x | 2.5.x |
4.1.x[1 (opens new window)] | 7.9.3 | 5.3.2 | 2.4.x |
4.0.x[1 (opens new window)] | 7.6.2 | 5.2.12 | 2.3.x |
3.2.x[1 (opens new window)] | 6.8.12 | 5.2.12 | 2.2.x |
3.1.x[1 (opens new window)] | 6.2.2 | 5.1.19 | 2.1.x |
3.0.x[1 (opens new window)] | 5.5.0 | 5.0.13 | 2.0.x |
2.1.x[1 (opens new window)] | 2.4.0 | 4.3.25 | 1.5.x |