0

我們有一個用例,我們希望在不同的集羣中使用特定的索引以提高性能。 我們使用基於java的配置來進行elasticsearch。是否可以在彈簧數據彈性搜索中設置多個羣集?

@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) 
    } 
} 
  • 有沒有什麼辦法,使我們可以添加不同的彈性搜索羣集的配置?
  • Spring數據自動在指定的集羣中創建索引。如何在多集羣應用程序中管理索引的創建?

我使用的是有方法addTransportAddresses(inetSocketTransportAddress),它允許我們添加一個彈性搜索服務器地址數組。

  • 但是,我們將如何指定多個羣集名稱?

回答

1

沒有什麼能阻止你創建幾個客戶到不同的集羣。

在你ElasticSearchConfig類,只需聲明一個第二方法elasticsearchTemplate2()它返回嵌入另一個Client到其他集羣的ElasticsearchTemplate另一個實例。

然後,您可以調用一種方法或另一種方法,具體取決於您需要創建索引的位置。

+0

我們不會調用任何方法來創建索引。它會自動創建。我創建了另一個方法來指定不同的簇詳細信息,但是正在考慮使用methodName'elasticsearchTemplate()'自動創建另一個方法。 – Richa

+0

@Richa如果你能解決你的使用案例?我們與Guice有類似的情況。 – Harshit