programing

스프링 부트 탄성 검색 구성

minimums 2023. 11. 4. 10:32
반응형

스프링 부트 탄성 검색 구성

application.dev.properties 또는 application.prod.properties의 두 가지 프로파일 중 하나를 사용하는 작동하는 Spring Boot Elasticsearch Application이 있습니다.그 부분은 잘 작동합니다.애플리케이션에서 외부 탄성 검색을 읽는 데 문제가 있습니다.xxx.properties.

작동 내용:

@Configuration
@PropertySource(value = "classpath:config/elasticsearch.properties")
public class ElasticsearchConfiguration {

    @Resource
    private Environment environment;

    @Bean
    public Client client() {
        TransportClient client = new TransportClient();
        TransportAddress address = new InetSocketTransportAddress(
                environment.getProperty("elasticsearch.host"), 
                Integer.parseInt(environment.getProperty("elasticsearch.port"))
        );
        client.addTransportAddress(address);        
        return client;
    }

    @Bean
    public ElasticsearchOperations elasticsearchTemplate() {
        return new ElasticsearchTemplate(client());
    }
}

하지만 분명히 제 다중 환경 문제를 해결할 수는 없습니다.

또한 호스트 및 포트 변수에 대해 @Value 주석을 시도했지만 성공하지 못했습니다.

애플리케이션 속성 파일에서 값을 읽도록 위를 변환하거나 실행할 프로파일에 따라 다른 @PropertySource 파일을 선택하려면 어떻게 해야 합니까?

spring.data.elasticsearch.properties.host = 10.10.1.10
spring.data.elasticsearch.properties.port = 9300

감사해요.

구성 클래스 및 속성을 제거합니다.

다음 종속성 추가

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

추가만 하면 됩니다.spring.data.elasticsearch에 대한 속성application-prod.properties그리고.application-dev.properties원하는 환경에 맞게 변경할 수 있습니다.이 내용은 스프링 부트 가이드의 탄성 검색 섹션에 설명되어 있습니다.

spring.data.elasticsearch.cluster-nodes=10.10.1.10:9300

둘 중 하나의 파일의 값은 물론 다를 것입니다(또는 기본값을 에 넣습니다).application.properties그리고 단순히 그것으로 덮어쓰기만 하면 됩니다.application-dev.properties.

스프링 부츠는 다음을 기반으로 합니다.spring.profiles.active 원하는 속성 파일을 로드합니다.

당신 자신을 괴롭힐 필요가 없습니다.

Deinum에 동의합니다. Spring boot을 사용하는 경우 활성 프로파일에서 속성이 활성화됩니다.

프로젝트에 다양한 프로필이 있으며 탄력적인 검색 구성입니다.

@Configuration
public class ElasticSearchConfiguration {
    @Value("${spring.data.elasticsearch.cluster-name}")
    private String clusterName;
    @Value("${spring.data.elasticsearch.cluster-nodes}")
    private String clusterNodes;
    @Bean
    public ElasticsearchTemplate elasticsearchTemplate() throws UnknownHostException {
            String server = clusterNodes.split(":")[0];
            Integer port = Integer.parseInt(clusterNodes.split(":")[1]);
            Settings settings = Settings.settingsBuilder()
                .put("cluster.name", clusterName).build();
            client = TransportClient.builder().settings(settings).build()
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(server), port));
            return new ElasticsearchTemplate(client);

    }

언급URL : https://stackoverflow.com/questions/32837507/spring-boot-elasticsearch-configuration

반응형