我们有一个用例,我们希望在不同的集群中使用某些索引,以提高性能。我们使用基于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)
,它允许我们添加一组弹性搜索服务器地址。
没有什么可以阻止您为不同的集群创建多个客户端。
在你的ElasticSearchConfig
类中,只需声明第二个方法elasticsearchTemplate2()
,它返回另一个ElasticsearchTemplate
实例,将另一个Client
嵌入到另一个簇中。
然后根据创建索引的位置调用一种方法或另一种方法。