SpringBoot + ElasticSearch 연동 및 간단 API 호출해보기

Spring Boot와 ElasticSearch를 연동하여 간단한 API 호출하는 방법

1. Spring Boot 프로젝트 생성

우선 Spring Boot 프로젝트를 생성합니다.

2. ElasticSearch 의존성 추가

build.gradle 파일에 ElasticSearch 의존성을 추가합니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

3. ElasticSearch 설정

application.properties 파일에 ElasticSearch 클러스터와의 연결을 설정합니다.

spring.data.elasticsearch.cluster-name=my-application
spring.data.elasticsearch.cluster-nodes=localhost:9300

4. 인덱스 생성 및 데이터 색인

데이터를 저장할 인덱스를 생성하고, 데이터를 색인합니다.

@Service
public class ElasticSearchService {

    @Autowired
    private ElasticsearchOperations elasticsearchOperations;

    public void createIndex() {
        elasticsearchOperations.indexOps(MyData.class).create();
    }

    public void insertData() {
        MyData data1 = new MyData(1L, "John Doe");
        MyData data2 = new MyData(2L, "Jane Doe");
        MyData data3 = new MyData(3L, "Mike Smith");

        elasticsearchOperations.save(data1);
        elasticsearchOperations.save(data2);
        elasticsearchOperations.save(data3);
    }

    public List<MyData> searchData(String keyword) {
        NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();
        queryBuilder.withQuery(QueryBuilders.matchQuery("name", keyword));

        SearchHits<MyData> searchHits = elasticsearchOperations.search(queryBuilder.build(), MyData.class);
        List<MyData> results = new ArrayList<>();
        searchHits.forEach(hit -> results.add(hit.getContent()));

        return results;
    }
}

5. API 호출

API 컨트롤러에서 ElasticSearchService를 사용하여 검색을 수행

@RestController
@RequestMapping("/search")
public class SearchController {

    @Autowired
    private ElasticSearchService elasticSearchService;

    @GetMapping
    public List<MyData> search(@RequestParam("q") String query) {
        return elasticSearchService.searchData(query);
    }
}

/search 엔드포인트로 GET 요청을 보내면, q 쿼리 파라미터를 사용하여 검색어를 전달할 수 있습니다. ElasticSearchService를 사용하여 검색을 수행하고, 검색 결과를 반환합니다.

댓글

Designed by JB FACTORY

1 2 3 4 5 6 7 8 1 1 2 3 4 5 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10