spring-tutorial/docs/01.Java/13.框架/01.Spring/02.Spring数据/23.Spring访问Elasticsearch.md

6.0 KiB
Raw Permalink Blame History

title date order categories tags permalink
Spring 访问 Elasticsearch 2018-12-25 14:06:36 23
Java
框架
Spring
Spring数据
Java
框架
Spring
SpringBoot
Elasticsearch
/pages/fac14c/

Spring 访问 Elasticsearch

简介

Elasticsearch 是一个开源的、分布式的搜索和分析引擎。

通过 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.clientelasticsearch-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 一样注入 ElasticsearchTemplateTransportClient,如以下示例所示:

spring.data.elasticsearch.cluster-nodes=localhost:9300
@Component
public class MyBean {

	private final ElasticsearchTemplate template;

	public MyBean(ElasticsearchTemplate template) {
		this.template = template;
	}

	// ...

}

如果你添加了自定义的 ElasticsearchTemplateTransportClient @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] 7.12.0 5.3.x 2.5.x
4.1.x[1] 7.9.3 5.3.2 2.4.x
4.0.x[1] 7.6.2 5.2.12 2.3.x
3.2.x[1] 6.8.12 5.2.12 2.2.x
3.1.x[1] 6.2.2 5.1.19 2.1.x
3.0.x[1] 5.5.0 5.0.13 2.0.x
2.1.x[1] 2.4.0 4.3.25 1.5.x

参考资料