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

如何将多个弹性搜索连接添加到Spring Boot项目?

荀正谊
2023-03-14

我有两个弹性搜索服务器,我需要添加到spring boot项目的连接。对于一个连接,下面是我的代码,

@Configuration
@EnableElasticsearchRepositories(basePackages = {"packageName"})
public class ES {

    @Bean
    public RestHighLevelClient client() {
        CredentialsProvider cp = new BasicCredentialsProvider();
        cp.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("username", "password"));

        return new RestHighLevelClient(RestClient.builder(new HttpHost("host", "port", "https"))
                        .setHttpClientConfigCallback(httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(cp)
                                        .setKeepAliveStrategy(new DefaultConnectionKeepAliveStrategy())));
    }
}

那么如何添加其他服务器连接呢?如果我复制这个类并添加其他服务器连接详细信息,它会起作用吗?而且我还需要分隔索引。例如,我需要索引entity1必须仅在server 1中,并且索引entity2必须仅在server 2中。这可能吗?如果有人能帮助我,真的很感激。

共有2个答案

贺轶
2023-03-14

如果两个服务器属于同一个ES集群,请使用RestClient。构建器接受一组要连接的HttpHosts。客户端(在后台是ES低级REST客户端)将循环请求到这些主机。

更多信息

夏侯宏旷
2023-03-14

这在Spring Data Elasticsearch中目前是不可能的。存储库使用Spring上下文提供的ElasticsearchOperations bean,该bean使用配置的RestHighLevelClient。无法配置到不同集群的多个连接。

编辑:

您可以使用bean将一个连接配置为默认连接,然后将其作为ElasticsearchOperations注入并由存储库方法使用。

对于第二个连接,您需要创建一个新的RestHighLevelClient,就像您已经做的那样,然后创建一个额外的Elasticsearch chRestTemboard传入第二个客户端;使用注入的Elasticsearch chConverter作为第二个构造html" target="_blank">函数参数。您可以检查org.springframework.data.elasticsearch.config.AbstractElasticsearch chConfiguration中的代码是如何完成的。

使用第二个ElasticsearchOperations实例,您可以针对第二个集群工作,但您必须使用此接口的方法,而不能使用存储库方法。

 类似资料:
  • 我目前正在运行elastic search和kibana 7.0.0版,在我的项目中有一个docker compose文件 我能够连接到端口5601上的kibana(索引和搜索数据),以及端口9200上的弹性搜索。 我试图使用NEST连接到弹性这里是我的基本配置 当我通过NEST执行任何命令时,如ping、健康检查或搜索等,我检索到以下异常。这让我相信docker容器(linux容器)中存在一些与

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 我在localhost:9200上有一个本地弹性搜索,当我向浏览器输入地址时,我得到了以下内容: 当我尝试运行我的应用程序时,我得到以下错误: 如何用我的Jhipster(V5.0.0-beta.3)后端连接到这个弹性服务器?

  • 在我的maven-Spring项目中,我试图以以下身份连接到ElasticSearch:TransportClient esclient=TransportClient.builder().build().AddTransportAddress(new InetSocketTransportAddress(InetAddress.GetByName(“localHost”),9300)); 我不断

  • 我正在尝试创建一个节点。带有RESTAPI的js应用程序,用于查询弹性搜索应用程序云上的数据。我有以下elasticsearch连接代码 上面的连接连接正确,如果我添加任何数据,它也会被添加。但是我希望数据不会被添加到本地主机。我希望我的实际集群拥有数据。我尝试了以下代码 上面的代码仍然没有添加数据或从我的云集群中检索数据... Evrry在互联网上我只找到localhost示例...有人能告诉我

  • 我试图使用docker容器创建一个弹性搜索安装。我只使用Elastic.io提供者的映像。 我不知道为什么,但logstash告诉我,他无法连接到带有此错误消息的ElasticSearch实例: 如果logstash真的得到了我的设置,有人能告诉我为什么他使用了一个坏的主机事件吗?