Search code examples
springelasticsearchelasticsearch-5elasticsearch-java-api

Configure Spring bean by setting up the elastic 5.5.1 configuration settings and create a transport client bean


I am trying to use ElasticSearch Java API 5.5.1 and while trying to create a bean for PreBuiltTransportClient(TransportClient in ES 2.3) I am facing the below issue.

Error creating bean with name 'preBuildTransportClient' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Unsatisfied dependency expressed through constructor parameter 0: Could not convert argument value of type [org.elasticsearch.common.settings.Settings$Builder] to required type [org.elasticsearch.common.settings.Settings]: Failed to convert value of type [org.elasticsearch.common.settings.Settings$Builder] to required type [org.elasticsearch.common.settings.Settings]; nested exception is java.lang.IllegalStateException: Cannot convert value of type [org.elasticsearch.common.settings.Settings$Builder] to required type [org.elasticsearch.common.settings.Settings]: no matching editors or conversion strategy found

 <bean id="settingsBean" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject">
        <bean id="builderObj" class="org.elasticsearch.common.settings.Settings" factory-method="builder" />
    </property>
    <property name="targetMethod" value="put" />
    <property name="arguments">
        <map>

            <entry key="cluster.name">
                <value>mycluster</value>
            </entry>

        </map>
    </property>
</bean>

<bean id="transportClient" class="org.elasticsearch.transport.client.PreBuiltTransportClient">
     <constructor-arg name="settings" ref="esSettingsBuilderStep2" />
     <constructor-arg name="plugins">
        <null />
</constructor-arg>
</bean>

Any suggestion for creating a bean for PreBuiltTransportClient?


Solution

  • Created a class and used that as bean with proper arguments worked for me.