프로젝트 레포지토리의 final 브랜치에 프로젝트 완성본을 올려뒀다. 강의의 실습을 똑같이 따라했는데도 잘 작동하지 않았다면, 아래 코드와 비교해서 잘못 작성한 부분이 있는 지 체크해보자.
✅ Spring Boot에서 Elasticsearch 활용해 자동완성 API 만들기 Controller에 API 추가하기 Service에 의존성 추가하기 Service에 메서드 만들고 로직 추가하기 Postman으로 테스트를 위한 더미 데이터 넣기 P
✅ 요구사항 반영하기 대소문자 구분없이 검색할 수 있게 만들기 단어의 순서에 상관없이 검색 잘 되게 만들기 HTML 태그로 검색되지 않게 만들기 요구사항을 잘 반영했는 지 테스트해보기
✅ 인프라 아키텍처 설계하기 MySQL과 Elasticsearch의 장단점은 명확하다. MySQL은 트랜잭션을 기반으로 데이터의 정합성을 보존해주는 게 큰 장점이다. 반면에 Elasticsearch는 빠른 검색에 최적화 되어 있다. 현업에서는 이 2가
✅ Spring Boot에 검색 API 만들기 Controller에 API 추가하기 Service에 메서드 추가하기 깔끔한 테스트를 위해 기존 데이터 삭제하기 Postman으로 테스트를 위한 더미 데이터 집어넣기 테스트해보기 지금까지 구현하고자 한 자
✅ Spring Boot에 Elasitc Cloud의 Elasticsearch 연결하기 Spring Boot에 Elastic Cloud의 Elasicsearch를 연결하기 위해서는 주소(Endpoint), username, password 이 3가지를
✅ MySQL에 데이터 삽입/삭제 시 Elasticsearch에도 같이 반영되게 만들기 이전 강의에서 설계했던 인프라 아키텍처에 맞게 작동하도록 만들어보자. ProductDocumentRepository 의존성 추가 상품 등록 로직 수정하기 상품 삭제
✅ 애널라이저(Analyzer)란? 이전 강의에서 products의 name 필드값을 토큰(token)으로 분리해 역인덱스(Inverted Index)로 저장하는 과정을 살펴봤다. 이 과정에서 문자열(text)을 토큰으로 변환시켜주는 장치를 보고 애널
✅ 단어의 형태(-ed, -ing, -s, -er 등)에 상관없이 검색하는 방법 영어 단어를 보면 play, playing, played, player 등 다양한 형태로 사용된다. 검색을 할 때 단어의 형태에 상관없이 검색이 가능하다면 훨씬 편하게 원
✅ 검색할 때 필요없는 불용어(a, an, the, or, but 등) 제거하기 (stop) 영어로 작성된 게시글을 보면 검색어로 잘 사용하지 않는 a, an, the, or과 같은 불용어(= 의미없는 단어)가 많이 포함되어 있다. 역인덱스의 효율적인