当前位置: 首页 > 知识库问答 >
问题:

连接到Spring启动应用程序中现有ElasticSearch实例的问题

戴品
2023-03-14

我有一个本地运行的elasticsearch实例。我有一个spring boot应用程序。在我的应用程序中,我有一个服务ServiceX,其中包含一个elasticsearch存储库,它扩展了ElasticsearchRepository。所以服务X包含YRepository扩展了ElasticsearchRepository

我有一个本地运行的elasticsearch实例。

我的弹性搜索设置是

ELASTICSEARCH (ElasticsearchProperties)
spring.data.elasticsearch.properties.http.enabled=true
spring.data.elasticsearch.properties.host = localhost
spring.data.elasticsearch.properties.port = 9300

当应用程序启动时,会创建一个弹性搜索模板。使用的客户端是NodeClient。NodeClient的设置是

"http.enabled" -> "true"
"port" -> "9300"
"host" -> "localhost"
"cluster.name" -> "elasticsearch"
"node.local" -> "true"
"name" -> "Human Robot"
"path.logs" -> "C:/dev/git/xxx/logs"

elasticsearch(本例中为人类机器人)的名称与正在运行的本地elasticsearch实例(本例中为Nikki)不匹配。

看起来是这样的。创建logstash 2的新实例。创建logstash的嵌入式实例。

我翻遍了很多资料,但找不到任何可以帮忙的留档。

请大家建议使用什么设置好吗?谢谢

共有2个答案

富勇军
2023-03-14

谢谢。你相信吗,在我看到你的帖子之前,我实际上刚刚开始尝试使用配置文件。我添加了一个配置类

@Configuration
public class ElasticSearchConfig {

    @Bean
    public Client client() {
      TransportClient client = new TransportClient();
      TransportAddress address = new InetSocketTransportAddress(
              "localhost",9300);
      client.addTransportAddress(address);
      return client;
  }
}

客户端现在正被注入到elasticsearch模板中(因此不需要elasticsearch ch模板bean)。

我在尝试连接时出错,但结果是由于elasticsearch 2.2.0,我用elasticsearch 1.7.3进行了尝试,现在可以解决下一个问题了!

方寒
2023-03-14

我认为,除非您希望应用程序成为集群的一部分,否则您不想使用NodeClient,而是使用TransportClient

我相信您有以下依赖关系:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artificatId>spring-boot-starter-data-elasticsearch</artificatId>
</dependency>

然后您需要创建一些配置类,如下所示:

@Configuration
@PropertySource(value = "classpath:config/elasticsearch.properties")
public class ElasticsearchConfiguration {

    @Resource
    private Environment environment;

    @Bean
    public Client client() {
        TransportClient client = new TransportClient();
        TransportAddress address = new InetSocketTransportAddress(
                environment.getProperty("elasticsearch.host"), 
                Integer.parseInt(environment.getProperty("elasticsearch.port"))
        );
        client.addTransportAddress(address);        
        return client;
    }

    @Bean
    public ElasticsearchOperations elasticsearchTemplate() {
        return new ElasticsearchTemplate(client());
    }
}

还要检查Spring靴导槽的弹性部分,尤其是关于Spring的部分。数据弹性搜索。集群节点如果你放置多个逗号分隔的主机端口列表,它将生成一个TransportClient,由你选择

试试看,希望有帮助

 类似资料:
  • Spring启动应用程序。 MongoDb云上托管的MongoDb数据库。 应用特性 错误 如果我与MongoDb Compass使用相同的主机/端口/用户/密码组合,我可以连接而不会出现问题。 如果我使用这样的集群连接 应用程序抛出错误 我已打开防火墙,以接受任何连接。 Analitics显示了一些操作,但我在Spring仍然会出错。 我只是遵循一个youtube教程。在他们的例子中,这并没有引

  • 我试图在一个spring-boot应用程序中运行一个selenium测试(通过GalenFramework完成)。我面临的问题是在自动驾驶部分。由于NULLPOINTER异常,我无法将AppDetails类自动连接到测试类中。 在尝试单独运行测试时(直接从或方法),我得到了nullpointer异常。 但我能够运行()应用程序,这不是必需的,即使我试图运行应用程序以确保正确读取yaml文件(shi

  • 一旦我运行我的代码,它给出了下面的错误。在这里我可以解决这个问题。 在com中输入personRepository。实例演示。服务PersonService需要一个名为“mongoTemplate”的bean,但找不到该bean。 注入点有以下注释:-@org.springframework.beans.factory.annotation.自动配电(必需=true) 行动: 考虑在配置中定义一个

  • 我想对Spring数据使用ElasticSearch。我使用的是Spring 5、Spring Boot 2和ElasticSearch 7.4。Docker compose: 马文: 存储库: 配置: 和错误时启动应用程序: 引起:java.lang.NoSuchMEDError:org.springframework.http.HttpHeaders.(Lorg/springframe/uti

  • 我使用Angular 4、Spring boot和Mysql。在当地,一切正常。我尝试部署在远程服务器Centos 7上。除了当我访问我的网站时,它从我的本地数据库获取数据,而不是从位于远程服务器上的mysql数据库获取数据之外,所有这些都可以正常工作。 我在另一台计算机上试过,结果是一样的,它从本地计算机获取数据! 这是我的Spring Boot的application.properties文件

  • 我在SpringBoot中安装了开发人员应用程序,导出了war文件并将其放在Tomcat9服务器中。当我尝试在Rest客户端中测试API时,应用程序正在连接到测试DB,而不是我在应用程序中声明的DB。mongodb的属性,下面是我的应用程序。所有物 有人能帮我吗。