2017-11-27 5 views
0

Ich möchte ElasticSearch Repository in einer Spring-Boot-Anwendung verwenden. Ich habe eine lokale laufende Instanz Elasticsearch 5.5.2 ich für eine Weile suchen habe, versucht, so viele Kombinationen der verschiedenen Quellen, aber nichts eine funktionierende Lösung zu ergeben, und jetzt stecke Ich bin mit Fehler:mit Springboot mit lokaler Elastic-Search-Instanz funktioniert nicht

Fehler Bean mit dem Namen 'elasticsearchTemplate'

schaffen, was mache ich falsch?

Das ist mein Haupt Klasse

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) 
    public class Application { 

     public static void main(String[] args) { 

      Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1"); 
      try 
      { 
       SpringApplication.run(Application.class, args); 
      } 
      catch(Exception e) 
      { 
       logger.info("caught an exception",e); 
      } 

     } 
} 

Config Klasse

@Configuration 
@EnableElasticsearchRepositories(basePackages = "hello") 
@ComponentScan(basePackages = {"hello"}) 
public class config { 

    @Bean 
    public NodeBuilder nodeBuilder() { 
     return new NodeBuilder(); 
    } 

    @Bean 
    public ElasticsearchOperations elasticsearchTemplate() { 
     Settings.Builder elasticsearchSettings = 
       Settings.settingsBuilder() 
         .put("http.enabled", "false") // 1 
         .put("path.data", "/home/nad/elasticsearch_data") // 2 
         .put("path.home", "/home/nad/Downloads/elasticsearch-5.5.2"); // 3 



     return new ElasticsearchTemplate(nodeBuilder() 
       .local(true) 
       .settings(elasticsearchSettings.build()) 
       .node() 
       .client()); 
    } 

} 

meine build.gradle Datei

group 'FirstWebServer' 
version '1.0-SNAPSHOT' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.8.RELEASE") 
    } 
} 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'idea' 
apply plugin: 'org.springframework.boot' 

jar { 
    baseName = 'gs-spring-boot' 
    version = '0.1.0' 
} 

repositories { 
    maven { url "http://repo.spring.io/milestone" } 
    mavenCentral() 
} 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

dependencies { 
    // tag::jetty[] 
    compile("org.springframework.boot:spring-boot-starter-web") { 
     exclude module: "spring-boot-starter-tomcat" 
    } 
    compile("org.springframework.boot:spring-boot-starter-jetty") 
    // end::jetty[] 
    // tag::actuator[] 
    compile("org.springframework.boot:spring-boot-starter-actuator") 
    // end::actuator[] 
    //compile group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '1.2.5.RELEASE' 
    compile group: 'org.springframework.data', name: 'spring-data-elasticsearch', version: '3.0.1.RELEASE' 
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-parent', version: '2.0.0.M6', ext: 'pom' 
    compile("org.springframework.boot:spring-boot-starter-data-jpa") 
    compile group: 'org.projectlombok', name: 'lombok', version: '1.16.18' 

    testCompile("junit:junit") 
} 

was t Die richtige Art der Konfiguration? einige Beispiele zeigen application.properties Konfiguration, einige nicht. Was Kompatibilität, einige Shows, die nur 2. * oder niedriger Elasticsearch, sagten einige, dass

Es ist wirklich verwirrend :(

Vielen Dank für Ihre Hilfe

Antwort

0

Um Elasticsearch 5.x zu verwenden, benötigen Sie Spring Data Release Kay (bereits veröffentlicht), welches nur Teil von Spring Boot 2 ist (wird in Kürze veröffentlicht) Im Moment ist Ihre einzige Option wirklich, den neuesten Spring Boot 2 Build zu verwenden und darauf zu warten eine stabile Version

Einige Leute haben versucht, Spring Data Kay mit Spring Boot 1.5 zu verwenden, aber endete in Abhängigkeit Hölle. Wahrscheinlich nicht den Schmerz wert mit Spring Boot 2 gleich um die Ecke.

Verwandte Themen