프로젝트/여행지 오픈 API

여행지 오픈 API 설명과 Elastic Search를 사용한 아이디어.

블랑v 2023. 10. 26. 15:21

우리 팀은 주니어 개발자들을 위한 'Trip Open API'를 만들고 있다.

이 API는 기존의 공공데이터 중 여행지의 정보가 너무 부실했기 때문에, API를 사용하는 사용자들이 조금 더 확장된 기능과 편리함을 느낄 수 있도록 계획하였다. 

이 과정에서 편리함과 효율성으로 생각한 것은 '추천' 과 '확장된 정보'이다.


기존 공공데이터 API의 경우 여행지명과 지역 위치, 간단한 설명과 위경도만 존재했다.

한정된 데이터였기에, Selenium을 통해 기존 데이터를 기반으로 정보를 추가적으로 스크래핑해서 관련된 음식점, 숙소, 평점 등을 추가할 예정이다. 또한 전문 검색과 키워드 단위로 나눈 '추천 키워드' 개발을 통해 명확하지 않은 개념에도 여행지를 추천할 수 있다.

기본적으로 1차 수집 데이터는 MongoDB, MySQL에 저장될 계획이지만 분석기를 통해 토큰화를 해야 하니 빠른 시일 내에 수집 데이터를 다른 형태로 보관할 것이다.

나는 이 과정에서 ElasticSearch를 담당하게 되었다. 이 기술 스택을 이용해서 어떤 서비스를 제공할 수 있을까?

일단 생각해본 아이디어는 다음과 같다.

 

  1. 추천 검색어 제공: 사용자가 검색어를 입력할 때, ElasticSearch의 자동 완성 기능을 사용해 관련된 추천 검색어를 제공할 수 있다. 이는 사용자가 원하는 여행지를 빠르게 찾을 수 있게 도와준다.

  2. 전문 검색 및 유사도 제공: ElasticSearch의 match, multi_match 쿼리를 사용하여 여행지의 설명, 제목, 위치 등 여러 필드에서 검색을 수행하고, 결과를 유사도 점수 순으로 정렬할 수 있다. 이를 통해 사용자가 원하는 정보와 가장 유사한 여행지를 추천받을 수 있다.

  3. 검색어 랭킹 제공: 로그스태시를 사용하여 검색어 요청 로그를 수집하면, 이 데이터를 활용해 가장 인기 있는 검색어나 최근의 트렌드 검색어를 추출하여 제공할 수 있다.

  4. 정렬 기능: 사용자가 여행지의 평점, 거리, 관련 음식점 수 등의 기준으로 검색 결과를 정렬할 수 있게 한다.

  5. 필터 기능: 특정 지역, 가격 범위, 평점 범위 등으로 검색 결과를 필터링 할 수 있는 기능 제공.

  6. 리뷰 및 평점 시스템: ElasticSearch를 사용해 실시간으로 여행지에 대한 리뷰나 평점을 검색하고 분석하는 기능을 추가한다.

  7. 시각화: Kibana를 활용해 여행지별 방문자 수, 인기 검색어, 평점 분포 등의 시각적인 대시보드를 제공한다.


사실 수집한 데이터셋이 너무 적어서 빅데이터라고는 할 수 없을 것 같은데, 엘라스틱서치를 사용하는 이유에 대해서도 고민해보았다.

- 빠른 검색 속도
: 엘라스틱서치는 데이터 크기와 상관없이 빠르게 검색 결과를 반환한다. 가장 큰 이점이라고 생각한다.

 

- 분산 처리: 데이터가 증가하면 클러스터를 확장하여 처리 성능을 유지할 수 있다.

 

- 실시간 데이터 처리: 실시간으로 데이터를 색인화하고 검색할 수 있으므로, 사용자에게 최신 정보를 제공할 수 있다.

 

- 다양한 분석 도구: Elastic Stack(ELK Stack)을 통해 로그 분석, 시각화 등 다양한 분석을 수행할 수 있다.

 

이 정도가 존재할 것 같다.