분류 전체보기 1341

Ch06. 고급 검색 - 별칭을 이용해 항상 최신 인덱스 유지하기

엘라스틱 서치는 운영 중인 서비스에서 인덱스가 삭제되더라도 지속될 수 있도록 별칭이라는 기능을 제공한다. 인덱스를 생성할 때 별칭을 사용해 인덱스가 추가되거나 삭제될 경우 새로운 인덱스로 사용자 요청이 자연스럽게 이동하도록 유도한다.(인덱스가 변경되더라도 클라이언트는 그 사실을 알 수 없다)인덱스 별칭을 사용하면 두 개 이상의 인덱스를 검색할 때도 한 번의 요청으로 모두 검색되도록 만들 수도 있다. 인덱스 별칭 생성POST _aliases{ "actions": [ { "add": { "index": "movie_search", "alias": "movie" } }, { "add": { "index": "movie_info", "alias": "movie" } } ]}인덱스 별칭 조회POST..

Elastic Search 2025.09.24

Ch06. 고급 검색 - 검색 템플릿을 이용한 동적 쿼리 제공

검색 템플릿은 복잡한 검색 로직을 템플릿으로 저장하고 활용할 수 있다. 검색 템플릿의 필드명과 파라미터를 사용해서 쿼리를 전송하고, 템플릿에 제공한 파라미터로 실제 검색이 이뤄진다.(클라이언트 코드가 단순해짐)클라이언트 프로그램을 열어 요구사항이 변경될 때마다 수정 배포하는 것이 아닌 엘라스틱서치에 저장돼 있는 템플릿의 기존 쿼리를 수정하고 새 쿼리를 작성하면 된다검색 템플릿 생성POST _scripts/movie_search_example_template{ "script": { "lang": "mustache", "source": { "query": { "match": { "movieNm": "{{movie_name}}" } } ..

Elastic Search 2025.09.24

Ch06. 고급 검색 - 스크립팅을 이용해 동적으로 필드 추가하기

엘라스틱서치는 스크립트를 이용해 사용자가 특정 로직을 삽입하는 것이 가능하다.(스크립팅)스크립팅을 이용하면, 검색 요청 시 특정 필드를 선택적으로 반환하거나, 필드의 특정 요소를 수정하는 등 광범위한 작업을 할 수 있다.최신 엘라스틱서치에서는 스크립팅 전용 언어인 페인리스(Painless)가 도입되어 전문적인 스크립트 작성이 가능해졌다.업데이트 API 같은 경우가 내부적으로 스크립팅을 사용하는 것으로 업데이트할 로직을 스크립트로 직접 정의하고 이를 통해 문서의 업데이트가 이뤄지는 것이다.스크립팅을 사용하는 방법 1. config 폴더에 스크립팅을 저장하는 방식: 스크립트 파일을 config 폴더에 저장한 후, 이름을 지정해 코드에서 호출2. in-requests 방식: 동적 스크립팅으로 API를 호출할 ..

Elastic Search 2025.09.24

Ch06. 고급 검색 - 한글 형태소 분석기 사용하기

엘라스틱서치에서 한글 문서를 효율적으로 검색하게 하려면 한글 형태소 분석기를 활용해 직접 분석기를 구성해야 한다. 한글 같은 경우 다른 언어와 달리 조사나 어미의 접미사가 명사, 동사 등과 결합하기 때문에 형태소 분석하는 과정이 어렵다. 엘라스틱서치는 사용 가능한 한글 형태소 분석기로는 상용 제품도 있고, 오픈소스로 공개된 것들도 있다.은전한닢 형태소 분석기설치 방법/bin/elasticsearch-plugin install https://github.com/javacafe-project/elastic-book-etc/raw/master/plugin/elasticsearch-analysis-seunjeon-6.4.3.zip사용 방법PUT /seunjeon_default_analyzer{ "setting..

Elastic Search 2025.09.24

Ch01. 데이터 베이스 소개 - 데이터베이스 관리 시스템이 필요한 이유

우리가 쇼핑몰을 운영하면서 생기는 그 수많은 데이터들, 예를 들어 고객 정보, 상품 정보, 주문 내역 같은 것들을 어딘가에는 저장해야 정보로 만들 수 있다. 이런 데이터들을 그냥 머릿속에 기억해 둘 수는 없다 왜 우리는 데이터 저장 방식에 대해 고민해야 할까?쇼핑몰이 점점 커지면서 데이터는 기하급수적으로 늘어난다. 처음에는 몇 개 안 되는 주문이라 손으로 메모장이나 장부에 적을 수도 있다. 하지만 하루에 수백, 수천 건의 주문이 들어오고, 수만 명의 고객 정보를 관리해야 한다면? 그때도 주먹구구식으로 데이터를 관리할 수 있을까? 당연히 어렵다. 데이터가 엉망으로 관리되면, 필요한 정보를 제때 얻을 수 없고, 결국 우리 쇼핑몰 운영에 큰 차질이 생긴다. 그래서 데이터를 '어떻게 잘 보관하고 관리할 것인가'..

Kafka Producer의 Send() 와 Producer 메시지 동기화 전송

Kafka Producer의 Send()Kafka Producer의 Send() 메소드 호출 프로세스Kafka Producer 정송은 Producer Client의 별도 Thread가 전송을 담당한다는 점에서 기본적으로 Thread간 Async 전송이다.Producer Client의 Main Thread가 Send() 메서드를 호출하여 메시지 전송을 시작하지만 바로 전송되진 않으며, 내부 Buffer에 메시지를 저장한 후에 별도의 Thread가 Kafka Broker에 실제 전송을 하는 방식이다.Kafka Producer의 Send() 메소드 호출 상세 프로세스

Ch01. 데이터 베이스 소개 - 데이터와 정보

데이터와 정보어떤 개념을 학습할 때 그 개념의 핵심 단어를 먼저 이해하는 것이 중요하다. 데이터베이스(Database)를 제대로 이해하려면, 먼저 그 이름의 주인공인 데이터(Data)라는 개념과 친해져야 한다.데이터는 언뜻 쉬워 보이지만, 정보(Information)라는 단어와 비교할 때 그 의미가 비로소 명확해진다. 데이터와 정보, 무엇이 다른가?이제 막 시작한 우리 쇼핑몰이 제법 인기를 얻어 정신없이 바쁘다고 상상해보자. 고객 주문이 쏟아지고, 상품이 팔려나가며, 새로운 회원들이 계속 가입한다. 이 과정에서 수많은 기록, 즉 데이터가 쌓인다. 하지만 이 기록들을 그냥 쌓아두기만 한다면, 우리 쇼핑몰이 잘 성장하고 있는지, 어떤 상품이 가장 인기가 많은지, 누가 우리의 VIP 고객인지 알 수 있을까? ..

Ch05. 데이터 집계 - 근사값으로 제공되는 집계 연산

일반적으로 사용자들은 모든 연산의 계산 결과가 정확할 것이라고 생각하기 때문에 어떠한 집계 연산이 근삿값을 제공하는지 명확히 알지 못하면 큰 낭패를 볼 수 있다.집계 연산과 정확도집계 종류설명버킷 집계특정 기준을 충족하는 문서들을 버킷으로 분류하는 집계메트릭 집계버킷에 존재하는 문서들을 이용해 각종 통계 지표를 생성하는 집계파이프라인 집계서로 다른 메트릭 집계의 출력을 연결하는 집계 패밀리행렬 집계추출한 값을 기반으로 결과를 행렬로 생성하는 집계 패밀리위 집계 중 실제 수학적인 계산을 수행하는 것은 메트릭 집계뿐이다. 이런 메트릭 집계로 제공되는 집계 연산을 목적에 따라 분류할 수 있다.1) 일반적인 계산을 위한 집계 연산집계 연산설명평균 집계- 문서에서 추출한 숫자값의 평균을 계산하는 메트릭 집계- 키..

Elastic Search 2025.09.18

Ch05. 데이터 집계 - 파이프라인 집계

파이프라인 집계는 다른 집계로 생성된 버킷을 참조해서 집계를 수행한다(집계, 중첩된 집계를 통해 생성된 버킷을 사용해 추가적인 계산을 한다.) 파이프라인 집계는 부모/형제 두 가지 유형이 있다.파이프라인 집계를 수행할 때는 buckets_path 파라미터를 사용해 참조할 집계의 경로를 지정함으로써 체인 형식으로 집계간의 연산이 이뤄진다. 파이프라인 집계는 모든 집계가 완료된 후에 생성된 버킷을 사용하기 때문에 하위 집계를 가질 수는 없지만 다른 파이프라인 집계와는 buckets_path를 통해 참조하도록 지정할 수 있다.(다른 집계를 통해 생성된 버킷을 사용해 또 다른 집계를 수행한다.) 집계를 참조하는 방법AGG_SEPARATOR: >METRIC_SEPARATOR: .AGG_NAME: 집계 이름METR..

Elastic Search 2025.09.18