我们有一个用例,我们希望在不同的集群中使用某些索引,以提高性能。 我们使用基于java的配置进行弹性搜索。
@Log4j
@Configuration
@EnableElasticsearchRepositories(basePackages = ["com.as.core.repositories"])
class ElasticSearchConfig {
@Bean
ElasticsearchOperations elasticsearchTemplate() {
Client client
Settings settings
InetSocketTransportAddress inetSocketTransportAddress = new InetSocketTransportAddress(
Holders.config.grails.elasticsearch.transportClientIP as String,
Holders.config.grails.elasticsearch.transportClientPort as Integer
)
settings = ImmutableSettings.settingsBuilder()
.put("cluster.name", "elasticsearch")
.build()
client = new TransportClient(settings)
.addTransportAddress(inetSocketTransportAddress)
return new ElasticsearchTemplate(client)
}
}
我用Google搜索的是方法addTransportAddresses(inetSocketTransportAddress)
,它允许我们添加一组弹性搜索服务器地址。
答案 0 :(得分:1)
没有什么可以阻止您为不同的群集创建多个客户端。
在您的ElasticSearchConfig
课程中,只需声明第二个方法elasticsearchTemplate2()
,该方法会返回另一个ElasticsearchTemplate
实例,将另一个Client
嵌入另一个群集。
然后根据您需要创建索引的位置调用一种方法或另一种方法。