gpt4 book ai didi

elasticsearch - spring boot + hibernate search + elastic search内嵌启动失败

转载 作者:行者123 更新时间:2023-12-04 07:29:24 29 4
gpt4 key购买 nike

我正在努力在 Spring Boot 设置中使用 Elasticsearch 后端设置 hibernate search。

我拥有的是 spring boot 和以下依赖项。

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
<version>1.4.0.M3</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-backend-elasticsearch</artifactId>
<version>5.6.0.Alpha3</version>
</dependency>

发生的情况是,休眠搜索在 Elasticsearch 完成启动之前初始化。

使用以下属性也可以公开其余接口(interface)

spring:
data:
elasticsearch:
properties:
http:
enabled: true

引发异常

Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:9200 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect

现在,我如何在这里定义依赖项?

我尝试使用自定义 BeanFactoryPostProcessor 来注入(inject)对 Elasticsearch 的依赖,但这在自动配置场景中似乎被忽略。

有什么方法可以引入等待直到elastic search启动吗?

当我将 hibernate index_management_strategy 设置为 NONE 时,该设置有效,但索引未配置,并且所有自定义分析器注释都被忽略,默认为默认映射在elasticsearch中,自动配置场景下无法配置。

理想情况下, Elasticsearch 应托管在 jvm 外部,但这在测试场景中很方便。

最佳答案

我了解这是您在集成测试期间遇到的问题。

您可以看看我们如何在 Hibernate Search 本身的集成测试期间启动 ES,使用 Maven 插件确保服务器在测试之前启动:-https://github.com/hibernate/hibernate-search/blob/5.6.0.Beta1/elasticsearch/pom.xml#L341-L368

注意这使用了自定义的 ES 配置,即使它只是一个单节点集群,也可以快速启动: -https://raw.githubusercontent.com/hibernate/hibernate-search/5.6.0.Beta1/elasticsearch/elasticsearchconfiguration/elasticsearch.yml

Hibernate Search 使用 Jest 客户端连接 ES,因此它需要您启用 ES 的 HTTP 连接器:我们不要将其与 NodeClient 混淆,这是一种不同的操作模式。

如果您的问题与自动化测试无关,而是与生产集群相关,那么我建议使用像 Kubernetes 这样的服务编排器。

关于elasticsearch - spring boot + hibernate search + elastic search内嵌启动失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37930019/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com