spring-data-elasticsearch,spring-java-config,Spring Boot,spring Data Elasticsearch,Spring Java Config" /> spring-data-elasticsearch,spring-java-config,Spring Boot,spring Data Elasticsearch,Spring Java Config" />

Spring boot 带springboot的elasticsearch 3.0.6 java配置

Spring boot 带springboot的elasticsearch 3.0.6 java配置,spring-boot,spring-data-elasticsearch,spring-java-config,Spring Boot,spring Data Elasticsearch,Spring Java Config,我需要用springboot配置elasticsearch 3.x, 有人能帮忙吗 我尝试了以下配置 @Configuration @EnableJpaRepositories(basePackages = "com.demo.elastic.jparepository") @EnableElasticsearchRepositories(basePackages = "com.demo.elastic.repository") public class ElasticConfigu

我需要用springboot配置elasticsearch 3.x, 有人能帮忙吗

我尝试了以下配置

@Configuration
@EnableJpaRepositories(basePackages = 
  "com.demo.elastic.jparepository")
@EnableElasticsearchRepositories(basePackages = 
  "com.demo.elastic.repository")
public class ElasticConfiguration {


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

@Bean
public ElasticsearchOperations elasticsearchTemplate() throws IOException {
    File tmpDir = File.createTempFile("elastic", Long.toString(System.nanoTime()));
    System.out.println("Temp directory: " + tmpDir.getAbsolutePath());
    Settings.Builder elasticsearchSettings =
            Settings.settingsBuilder()
                    .put("http.enabled", "true") // 1
                    .put("index.number_of_shards", "1")
                    .put("path.data", new File(tmpDir, "data").getAbsolutePath()) // 2
                    .put("path.logs", new File(tmpDir, "logs").getAbsolutePath()) // 2
                    .put("path.work", new File(tmpDir, "work").getAbsolutePath()) // 2
                    .put("path.home", tmpDir); // 3



    return new ElasticsearchTemplate(nodeBuilder()
            .local(true)
            .settings(elasticsearchSettings.build())
            .node()
            .client());
   }
}
但是,jar中缺少NodeBuilder


谢谢

尽管我尝试了,但我未能在本地创建节点。 我单独启动了用于elasticsearch的服务器,我的配置看起来是这样的:

application.yaml:

spring.data.elasticsearch:
  cluster-name: elasticsearch
  cluster-nodes: localhost:9300
使用配置:

package com.max.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;


@Configuration
@EnableElasticsearchRepositories(basePackages = "com.max.repository")
public class EsConfig {   
}

package com.max.config;

import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
import org.elasticsearch.transport.client.PreBuiltTransportClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;

import java.net.InetAddress;
import java.net.UnknownHostException;

@Configuration
@EnableElasticsearchRepositories(basePackages = "com.max.repository")
public class EsConfig {

    @Bean
    public ElasticsearchOperations elasticsearchTemplate(
            @Value("${spring.data.elasticsearch.cluster-nodes}") String esNode,
            @Value("${spring.data.elasticsearch.cluster-name}") String esClusterName) throws UnknownHostException {

        Settings esSettings = Settings.builder()
                .put("cluster.name", esClusterName)
                .build();

        String host = esNode.split(":")[0];
        Integer port = Integer.valueOf(esNode.split(":")[1]);

        return new ElasticsearchTemplate(
                new PreBuiltTransportClient(esSettings)
                        .addTransportAddress(
                                new InetSocketTransportAddress(
                                        InetAddress.getByName(host), port)));
    }

}