전체 글 1341

Ch07. 한글 검색 확장 기능 - 맞춤법 검사기

Term Suggester Api를 이용한 오타 교정Term Suggester API를 이용하면, 인덱스 내에 단어를 이용해 비슷한 단어가 추천된다. 플러그인 설치하기(한글 지원)자바 카펫 플러그인 설치wget https://github. com/javacafe-project/elastic-book-etc/raw/master/plugin/javacafe-analyzer-6.4.3. zipzip 파일 다운로드엘라스틱서치에 설치./bin/elasticsearch-plugin install file:///절대경로/javacafe-analyzer-6.4.3.zip 플러그인 정상 설치 여부 확인./bin/elasticsearch-plugin list 실습하기1. 인덱스 생성PUT /company_spellchec..

Elastic Search 2025.09.28

Ch07. 한글 검색 확장 기능 - Suggest API 소개

사용자가 키워드를 잘못 입력하였거나, 검색한 키워드가 없을 경우 어떻게 해야 할까? 검색 결과의 만족도를 높이긴 위해서는 도큐먼트 내에 존재하는 단어를 대상으로 비슷한 키워드를 변경해서 제시하는 교정 기능을 제공해야 한다.엘라스틱서치에서 제공하는 Suggest API를 이용하면 텀과 정확히 일치하지 않는 단어도 자동으로 인식해서 처리할 수 있으며 좀 더 사용자 친화적인 검색 서비스를 제공할 수 있다. 단어의 철자를 수정해서 다른 단어를 제안하거나, 제안된 내용을 보여주는 맞춤법 검사기 기능을 사용하면 된다. SuggestAPI의 4가지 기능Term Suggest API:추천 단어 제안(한글에서는 잘 동작하지 않는다.)Completion Suggest API: 자동 완성 제안(한글에서는 잘 동작하지 않는다..

Elastic Search 2025.09.28

피자 주문 시뮬레이션 Producer 구현

준비하기Java Faker Importimplementation 'com.github.javafaker:javafaker:1.0.2'https://mvnrepository.com/artifact/com.github.javafaker/javafaker/1.0.2 Pizza Message Source 코드 복사하기public class PizzaMessage { // 피자 메뉴를 설정. getRandomValueFromList()에서 임의의 피자명을 출력하는 데 사용. private static final List pizzaNames = List.of("Potato Pizza", "Cheese Pizza", "Cheese Garlic Pizza", "Super Supreme",..

Producer에서 키 값을 가지는 메시지 전송 구현

실습하기(Callback 없는 구현)1. ProducerAsyncWithKey 코드 작성public class ProducerAsyncWithKey { public static final Logger logger = LoggerFactory.getLogger(ProducerAsyncWithKey.class.getName()); public static void main(String[] args) { String topicName = "multipart-topic"; //KafkaProducer Configuration Setting //Null, String Properties props = new Properties(); //Bo..

Producer의 메시지 동기/비동기 전송 구현

Sync(동기 방식)Producer는 브로커로부터 해당 메시지를 성공적으로 받았다는 Ack 메시지를 받은 후 다음 메시지를 전송KafkaProducer.send().get() 호출하여, 브로커로 부터 Ack 메시지를 받을 때까지 대기함Async(비동기 방식)Producer는 브로커로 부터 해당 메시지를 성공적으로 받았다는 Ack 메시지를 기다리지 않고 전송브로커로부터 Ack 메시지를 비동기로 Producer에 받기 위해서 Callback을 적용함Send() 메서드 호출 시에 callback 객체를 인자로 입력하여, Ack 메시지를 Producer로 전달받을 수 있음Producer와 브로커와의 메시지 동기화 코드//동기화 코드 1Future future = KafkaProducer.send();Record..

Ch01. 데이터 베이스 소개 - 관계형 데이터베이스 종류

관계형 데이터베이스 핵심 개념관계형 데이터베이스는 데이터를 표의 형태로 관리한다. 이것은 사실 우리가 이미 엑셀을 통해 익숙하게 봐왔던 구조다. 용어만 다를 뿐, 개념은 비슷하다테이블 (Table): 관계형 데이터베이스에서 데이터를 저장하는 가장 기본적인 구조다. 엑셀의 시트(Sheet)와 거의 동일한 개념이다. 우리는 쇼핑몰 데이터를 관리하기 위해 고객 테이블, 상품 테이블, 주문 테이블 등을 만들게 될 것이다. 이 테이블은 특정 주제와 관련된 데이터들의 집합이다.행(Row): 테이블의 각 가로줄을 의미한다. 하나의 행은 개별적인 데이터 항목 하나를 나타낸다. 예를 들어, 고객 테이블에서 하나의 행은 고객 한 명의 정보를 의미한다. '이순신' 고객의 정보, '강감찬' 고객의 정보 등이 각각 하나의 행이..

Ch01. 데이터 베이스 소개 - 관계형 데이터베이스 종류

관계형 데이터베이스 종류Oracle (오라클 데이터베이스)매우 강력하고, 기능이 정말 많고, 안정성도 최고 수준인 상용 RDBMS의 대표 주자다. 주로 대기업이나 금융권처럼 아주 높은 수준의 성능과 안정성, 그리고 복잡한 기능을 필요로 하는 곳에서 많이 사용된다.단점: 라이선스 비용이 매우 비싸고, 기능이 많은 만큼 배우고 관리하는 데 더 많은 전문성이 요구된다.MySQL (마이에스큐엘)전 세계적으로 가장 널리 사용되는 오픈 소스 RDBMS 중 하나이다. 특히 웹 애플리케이션 개발 분야에서 압도적인 점유율을 자랑하며, 빠른 속도와 사용 편의성, 그리고 방대한 커뮤니티와 자료 덕분에 초보자부터 전문가까지 폭넓게 사용된다.MySQL 커뮤니티 에디션은 무료로 다운로드해서 사용할 수 있다. 상용 버전(Enter..

Ch01. 데이터 베이스 소개 - 관계형 데이터베이스 vs NoSQL

데이터베이스의 역사를 잠깐 되짚어 보자. 처음에는 단순 파일 시스템으로 데이터를 저장했고, 파일 시스템의 문제를 해결하기 위해 이어서 계층형과 네트워크형 DBMS가 나타났다. 이후 오늘날 가장 널리 쓰이는 관계형 DBMS(RDBMS)가 자리 잡았으며, 최근에는 빅데이터 처리나 특수 요구 사항에 대응하기 위해 NoSQL DBMS가 빠르게 발전하고 있다. 참고로 계층형과 네트워크형 DBMS는 시장에서 사장된 지 오래 되었고, 더는 사용되지 않는다. 이 모든 변화의 핵심 질문은 항상 같다. "데이터를 어떻게 하면 더 효과적이고 더 안전하게 관리할 수 있을까?" 관계형 데이터베이스 시스템RDBMS는 줄여서 보통 RDB라고 부른다. 워낙 많이 사용되기 때문에 통상적으로 DB라고 하면 바로 이 RDBMS를 뜻하기..

Ch01. 데이터 베이스 소개 - 데이터베이스 관리 시스템 (DBMS) 소개

데이터베이스 용어 정리데이터베이스라는 용어는 넓은 의미로는 다음과 같이 사용된다.데이터베이스는 특정 목적을 위해 구조화된 데이터의 모음이다. 예를 들어, 회사의 고객 정보, 제품 목록, 판매 기록 등을 엑셀 시트나 특정 형식의 파일에 정리해 둔 것 자체가 데이터베이스에 해당한다.예시:회원 정보가 담긴 표도서관의 도서 목록온라인 쇼핑몰의 상품 정보데이터베이스 관리 시스템(DBMS)이란 무엇인가?데이터베이스 관리 시스템(DBMS)이란, 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 데이터베이스를 생성, 정의, 공유, 사용, 관리하는 기능을 수행하는 소프트웨어 시스템을 말한다.쉽게 이야기해서 데이터베이스는 데이터를 체계적으로 모아놓은 창고이고, 데이터베이스 관리 시스템(DBMS)은 이 창고를 효율적으로 ..

Ch06. 고급 검색 - 스냅숏을 이용한 백업과 복구

클러스터와 인덱스의 데이터가 커질수록 백업이 필요하다. 이러한 문제를 해결하기 위해 엘라스틱서치에서는 _snapshot API를 제공한다.스냅숏 기능을 이용해 개별 인덱스를 백업할 수도 있고, 클러스터 전체를 스냅숏으로 만드는 것도 가능하다. 스냅숏 만들기1. elasticsearch.yml에 스냅숏 사용지 지정path repo: [ */home/snapshot/elastic/backup* ]2. 레포지토리 생성하기PUT _snapshot/movie_data_backup{ "type": "fs", "settings": { "location": "/home/snapshot/elastic/backup", "compress": true }}레포지토리는 스냅숏들을 저장하는 논리적인 공간으로, 물..

Elastic Search 2025.09.24