2014-01-26 135 views
0

我使用彈性搜索中,我通過彈簧工具覆蓋彈簧彈性的數據搜索羣集節點配置

彈簧數據彈性搜索

傳達給後端ES簇我的項目活動

以下是webapp的spring-repository描述。

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" 
    xsi:schemaLocation="http://www.springframework.org/schema/data/elasticsearch http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> 

    <elasticsearch:transport-client id="client" cluster-nodes="localhost:9300" /> 

    <bean name="elasticsearchTemplate" 
     class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate"> 
     <constructor-arg name="client" ref="client" /> 
    </bean> 

    <elasticsearch:repositories 
     base-package="com.customer.repositories" /> 
</beans> 

在這裏,我指定的集羣節點配置爲集羣節點=「本地主機:9300」,它是工作的罰款與我的本地測試。

在生產服務器上,我們有一個全功能的集羣設置,主機IP說(192.xx.xx.xx)。所以我的問題是,我們已經在生產服務器的/etc/project/es.yml文件中的yml文件中指定了羣集主機。所以我需要調整我的應用程序以從此自定義位置進行羣集配置。

由於上面的spring-repository xml由spring容器初始化,所以我們無法覆蓋這個行爲。有沒有辦法通過spring-data-elastic-search來實現它?

+0

嘿,spring數據還是彈性搜索專家對於這個問題的任何解決方案? – appu

+0

任何投入春天傢伙? – appu

回答

1

最後我解決了我的問題,並在此分享,以便對其他人有用。

更改陽明主意屬性文件(es.props)

春天庫的描述應該是如下

<?xml version="1.0" encoding="UTF-8"?>co 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" 
    xsi:schemaLocation="http://www.springframework.org/schema/data/elasticsearch 
         http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd 
         http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
         http://www.springframework.org/schema/context 
         http://www.springframework.org/schema/context/spring-context-3.1.xsd"> 

    <context:property-placeholder location="file:/etc/project/es.props" /> 

    <elasticsearch:transport-client id="client" cluster-nodes="${es-host}:9300""/> 

    <bean name="elasticsearchTemplate" 
     class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate"> 
     <constructor-arg name="client" ref="client" /> 
    </bean> 

    <elasticsearch:repositories 
     base-package="com.customer.repositories" /> 

</beans> 

其中在3.1+使用彈簧PropertySourcePlaceHolder改性機理。

所以它會查找/etc/project/es.props中的es.host。本地測試人員可以使用-Des.host = custom-cluser -host啓動服務器來覆蓋此屬性。

實際上,Mohsin(Spring-data-elastic-search開發人員)提供了有關此解決方案的提示。謝謝Mohsin。

+0

歡迎您:) –