且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Spring数据弹性搜索无法初始化弹性搜索模板

更新时间:2023-02-19 07:40:57

Spring数据尚未更新到2.x系列。



更新:好的。它有!


I am using spring-data-elasticsearch 2.0.0 RELEASE and ElasticSearch 2.2.0

I have setup my beans as follows:

@Configuration    
public class ElasticSearchClient {
        @Autowired
        private ElasticSerachConfig esConfig;
        static final String COLON = ":";
        static final String COMMA = ",";

        private Settings getSettings(){
                return Settings.builder()                                
                                .put("client.transport.sniff", esConfig.isClusterSniff())
                                .put("client.transport.ping_timeout", esConfig.getClientPingTimeout())
                                .put("client.transport.nodes_sampler_interval", esConfig.getClientNodesSampleInterval())
                                .build();
        }

        protected Client buildClient() throws Exception {
                TransportClient client = TransportClient.builder().settings(getSettings()).build();

                for (String clusterNode : split(esConfig.getClusteNodes(), COMMA)) {
                        String hostName = substringBeforeLast(clusterNode, COLON);
                        String port = substringAfterLast(clusterNode, COLON);        

                        client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(hostName), Integer.valueOf(port)));
                }
                client.connectedNodes();

                return client;
        }

        @Bean
        public ElasticsearchTemplate getElasticSearchTenplate() throws Exception{
                        return new ElasticsearchTemplate(buildClient());
        }
}

I get the following exception:

Caused by: java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories.repositoryBaseClass()
        at java.lang.reflect.Method.getDefaultValue(Unknown Source) ~[na:1.8.0_60]
        at org.springframework.core.type.clas-s-reading.RecursiveAnnotationAttributesVisitor.registerDefaultValues(RecursiveAnnotationAttributesVisitor.java:69) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.core.type.clas-s-reading.RecursiveAnnotationAttributesVisitor.doVisitEnd(RecursiveAnnotationAttributesVisitor.java:57) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.core.type.clas-s-reading.AnnotationAttributesReadingVisitor.doVisitEnd(AnnotationAttributesReadingVisitor.java:67) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.core.type.clas-s-reading.RecursiveAnnotationAttributesVisitor.visitEnd(RecursiveAnnotationAttributesVisitor.java:48) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.asm.ClassReader.readAnnotationValues(ClassReader.java:1802) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.asm.ClassReader.accept(ClassReader.java:642) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.asm.ClassReader.accept(ClassReader.java:508) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.core.type.clas-s-reading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:64) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.core.type.clas-s-reading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:98) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.core.type.clas-s-reading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102) ~[spring-core-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]
        at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:279) ~[spring-context-4.2.4.RELEASE.jar!/:4.2.4.RELEASE]

I have the following in my build.gradle:

compile 'org.springframework.data:spring-data-elasticsearch:2.0.0.RELEASE'      
compile 'org.springframework.data:spring-data-commons-core:1.4.1.RELEASE'

Is there anything I am missing? I am pretty much following the same example as provided in the spring-data-elasticsearch example.

Spring data has not been updated to 2.x series.

UPDATE: well. it has!