분류 전체보기 1341

Ch05. 데이터 집계 - 버킷 집계

버킷 집계는 메트릭 집계와는 다르게 메트릭을 계산하지 않고 버킷을 생성한다. 생성된 버킷은 쿼리와 함께 수행되어 쿼리 결과에 따른 컨텍스트 내에서 집계가 이뤄진다. 집계된 버킷은 또 다시 하위에서 집계를 한번 더 수행해서 집계된 결과에 대해 중첩된 집계를 수행하는 것이 가능하다.버킷을 생성하는건 집계된 데이터 집합을 메모리에 저장한다는 의미로, 중첩되는 단계가 깊어질수록 메모리 사용량은 점점 더 증가해 성능에 악영향을 줄 수 있다. -> 엘라스틱서치에서는 기본적으로 사용 가능한 최대 버킷 수가 정의되어 있으며, search.max_buckets 값을 변경하는 것으로 조정할 수 있다.질의 요청 시, 버킷 크기를 -1(전체) 또는 10000 이상의 값으로 지정하면 엘라스틱서치에서는 경고 메시지를 반환한다. ..

Elastic Search 2025.09.18

Ch05. 데이터 집계 - 메트릭 집계

특정 필드에 대하여 합이나 평균을 계산하거나, 다른 집계와 중첩해서 결과에 대해 특정 필드의 _score 값에 따라 정렬을 수행하거나, 지리 정보를 통해 범위 계산을 하는 등 다양한 집계를 수행할 수 있다. 일반적으로 필드 데이터를 사용해 집계가 이뤄지지만 스크립트를 사용해 집계를 수행할 수도 있다. 단일 숫자 집계는 집계를 수행한 결괏값이 하나라는 의미로 sum, avg가 속하며, 다중 숫자 메트릭 집계 같은 경우 집계를 수행한 결괏값이 여러 개가 될 수 있으며, Stats나 geo_bounds가 이에 속한다.RequestGET //_search?size=0{ "aggs": { "": { "": { "field": "" } } }}size: 집계된 문서들의 ..

Elastic Search 2025.09.18

Ch04. 데이터 검색 - 부가적인 검색 API

엘라스틱 서치는 대량의 데이터를 처리하기 위해 기본적으로 데이터를 분산 처리 하며, 빠른 검색을 위해 내부적으로 요청이 발생하면 모든 샤드에 검색 요청을 브로드 캐스팅 전달하고 기다린다. 각 샤드는 자신이 가지고 있는 데이터를 기준으로 검색을 수행하고 그 결과를 반환하게 되며, 모든 샤드로부터 검색 결과가 도착하면 도착한 모든 결과를 조합해서 최종 질의 결과를 출력한다.동적 분배 방식의 샤드 선택PUT _cluster/settings{ "transient": { "cluster.routing.use_adaptive_replica_selection": true }}엘라스틱서치는 부하 분산과 장애 극복을 위해 원본 샤드의 데이터를 복제한 레플리카 샤드를 함께 운영하는데, 검색 시 모든 샤드에서 검색..

Elastic Search 2025.09.14

Ch04. 데이터 검색 - Query DSL의 주요 쿼리

Match All QueryPOST movie_search/_search{ "query": { "match_all": {} }}matchAll Query는 색인된 모든 문서를 검색하는 쿼리이다.(색인에 저장된 문서를 확일할 때 사용한다.)Match QueryPOST movie_search/_search{ "query": { "match": { "movieNm": "그대 장미" } }}텍스트, 숫자, 날짜 등이 포함된 문장을 형태소 분석을 통해 Term으로 분리한 후 Term을 이용해 검색 질의를 수행operator를 지정하지 않았기 때문에, OR 연산으로 "그대", "장미" 검색을 수행한다.Multi Match QueryPOST movie_search/_search{ "..

Elastic Search 2025.09.14

Ch04. 데이터 검색 - Query DSL 이해하기

QueryDSL 쿼리 구조요청 구조{ "size" :, "from" : , "timeout" : , " _source":{ }, "query" : { }, "aggs" : { }, "sort" : { }}Size: 리턴 받는 결과의 개수를 지정한다(기본값은 10)From: 몇 번째 문서부터 가져올지를 지정한다(기본값은 0이다)timeout: 검색을 요청해서 결과를 받는 데까지 걸리는 시간을 설정한다(기본값은 무한대)timeout을 너무 짧게 잡으면 전체 샤드에서 timeout을 넘기지 않은 문서만 결과로 출력된다._source: 검색 시 필요한 필드만 출력하고 싶을 때 사용한다.query: 검색 조건문이 들어가야 하는 공간aggs: 통계 및 집계 데이터를 사용할 때 ..

Elastic Search 2025.09.14

Ch04. 데이터 검색 - 검색 API

문장은 색인 시점에 Term으로 분해되며, 검색 시 Term이 일치해야 검색이 가능해진다.엘라스틱 서치는 색인 시점에 Analyzer를 통해 분석된 Term, 출현 빈도, 문서 번호와 같이 역색인 구조로 만들어 내부적으로 저장한다.검색 시점에는 Keyword 타입과 같은 분석이 불가능한 데이터와 Text 타입과 같은 분석이 가능한 데이터를 구분해서 분석이 가능할 경우 분석기를 이용해 분석을 수행한다.검색 시점에도 Term을 얻을 수 있으며, 해당 Term으로 역색인 구조를 이용해 문서를 찾고 이를 통해 스코어를 계산해 결과로 제공한다.검색 질의 표현 방식검색 API는 기본적으로 Query를 기반으로 동작하며, 조건을 URI검색, Request Body 검색으로 표현할 수 있다. URI 검색GET movi..

Elastic Search 2025.09.14

Ch03. 데이터 모델링 - Document API 이해하기

문서 파라미터DocumentAPI에서는 다양한 파라미터를 제공한다. 문서 ID 자동 생성POST movie_dynamic/_doc{ "movieId": "20173732", "movieNm": "살아남은 아이", "movieNmEn": "Last Child", "typeNm": "장편"}문서를 생성할 때는 기본적으로 ID가 필요하며, 각 문서는 ID로 구분한다. (만약 문서 생성 시, 지정하지 않으면 자동 ID를 부여하며 UUID 형태이다.)문서 생성 시, 자동으로 UUID를 생성해 준다.버전 관리PUT movie_dynamic/_doc/1{ "nationAlt": "한국"}색인된 모든 문서는 버전 값을 가지고 있으며, 색인할 때 결과에 포함되어 나타난다.최초 1을 갖게 되고 문서에 변경이 일어..

Elastic Search 2025.09.13

Ch03. 데이터 모델링 - 엘라스틱서치 분석기

텍스트 분석 개요엘라스틱서치는 루씬 기반으로 구축된 텍스트 기반 검색 엔진으로 루씬이 제공하는 분석기를 그대로 활용한다.엘라스틱서치는 텍스트를 처리하기 위해 기본적으로 분석기를 사용하기 때문에 생각하는 데로 동작하지 않는다.엘라스틱 서치는 문서를 색인하기 전에 해당 문서의 필드 타입이 무엇인지 확인하고 텍스트 타입이면 분석기를 이용해 분석한다. 텍스트가 분석이 되면 개별 텀으로 나뉘어 형태소 형태로 분석된다.형태소는 특정 원칙에 의해 필터링되어 단어가 삭제되거나 추가, 수정되고 최종적으로 역색인된다.텍스트 분석은 언어별로 조금씩 다르게 동작하며, 엘라스틱 서치가 각각 다른 언어의 형태소를 분석할 수 있도록 언어별 분석기를 제공한다.언어의 분석기가 없다면 직접 개발 및 Custom Analyzer를 설치해..

Elastic Search 2025.09.13

Ch03. 데이터 모델링 - 필드 데이터 타입

Keyword 데이터 타입 키워드 형태로 사용할 데이터에 적합한 데이터 타입으로, 별도의 분석기를 거치지 않고, 원문 그대로 색인하기 때문에 특정 코드나 키워드 등 정형화된 콘텐츠에 주로 사용된다.PUT movie_search_datatype/_mapping/_doc{ "properties": { "multiMovieYn": { "type": "keyword" } }}엘라스틱서치 일부 기능 중 형태소 분석을 하지 않아야만 사용이 가능한 기능들은 Keyword 데이터 타입이 사용된다.아래 항목에서 많이 사용된다.검색 시, 필터링되는 항목정렬이 필요한 항목집계해야 하는 항목설정 가능한 주요 파라미터boost: 필드의 가중치, 검색 결과 정렬에 영향을 준다.(기본값은 1.0으로 1보다..

Elastic Search 2025.09.07