inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

elasticsearch를 활용한 숙박 전자상거래 시스템

7

안은혜

작성한 질문수 1

0

안녕하세요 지금 숙박업소를 검색/조회하는 시스템을 만들려고하는데

대규모 기반으로 만들어보려고합니다

 

하지만 문제가 있는데

호텔의 가격이 동적데이터일 예정이고, 체크인 체크아웃날짜마다 예약가능객실도 달라질터라

elasticsearch와 querydsl을 적절히 혼용하여 사용해야할거 같은데 어떻게 혼용해야할지 고민입니다

 

keyword=에코 checkIn=2026-06-01 checkOut=2026-06-02 capacityAdult=2 minPrice=15000 grade=5

① ES: "에코" → hotelId 목록 (최대 2000개)


② QueryDSL: WHERE hotel.id IN (esIds) + 날짜 기준 예약가능 여부 (reservation JOIN) + 가격 범위 (room_price JOIN) + 인원, 성급, 숙소유형 + 커서 페이징


결과 반환

이런식으로 하는게 좋을까요 아니면 es동기화 파이프라인을 만들어서 es에 올인하는게 나을까요?

포트폴리오 수준에서 어떻게 해야할지 고민입니다

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
안은혜님, 대규모 시스템에서는 Elasticsearch의 빠른 검색 성능과 QueryDSL의 데이터 조작 기능을 혼용하여 사용하는 전략이 효과적일 수 있습니다. 현재 제안하신 접근 방법은 현실적이고 유용해 보입니다.

  1. Elasticsearch를 활용한 초기 검색:

    • 키워드, 숙소 유형 등의 넓은 범주의 검색 조건은 Elasticsearch를 사용하여 필터링하고 해당 목록을 식별자로 가져오는 것이 좋습니다. ES의 빠른 검색 성능을 이용해 대량의 데이터를 신속하게 필터링할 수 있습니다.
  2. QueryDSL을 활용한 세부 데이터 필터링:

    • 가져온 hotelId 목록을 사용하여 데이터베이스에서 상세 조건(체크인/체크아웃 날짜에 따른 예약 가능 여부, 가격 범위, 인원 수 등)을 QueryDSL로 처리합니다.
    • QueryDSL은 JPA와 결합하여 복잡한 쿼리를 쉽게 구성할 수 있으므로, 조건이 복잡해지더라도 가독성과 유지보수성이 좋습니다.
  3. ES 동기화 파이프라인에 대한 고려:

    • Elasticsearch에 데이터를 올인하는 것은 매우 빠른 성능을 제공할 수 있지만, 데이터 일관성 유지가 어려울 수 있습니다. 호텔의 가격이나 예약 가능 여부처럼 자주 변하는 데이터를 실시간으로 동기화하기 위한 별도의 파이프라인 구축이 필요합니다.
    • 스냅샷이나 이벤트 중심의 데이터 동기화를 설계하여, 데이터 일관성을 유지하는 것이 중요합니다.

포트폴리오 수준에서는 제안하신 방법대로 Elasticsearch와 QueryDSL을 혼용하여 시스템을 구성하는 전략을 권장합니다. 이러한 방식은 나중에 프로젝트의 확장성이나 유지보수 측면에서도 유리할 수 있습니다. 추가적인 조언이 필요하시다면 언제든지 질문해 주세요!

참고: Spring Boot Reference Documentation
Elasticsearch와 Spring Data Elasticsearch 관련 섹션

38번 문제 보기 3,4번

1

41

3

Service(name: traefik)의 EXTERNAL_IP 가 Pending 입니다.

1

46

2

22강 케글 연동 강의내용 누락된듯해요

1

52

2

JpaCursorItemReader의 정렬 조건 부재의 영향

1

38

2