BackEnd/elasticsearch
-
13. 집계(Aggregation)BackEnd/elasticsearch 2021. 10. 6. 22:04
집계(Aggregation)는 데이터를 그룹화하고 통계를 구하는 기능입니다. 엘라스틱서치는 SQL보다 더욱 강력한 집계 기능을 제공합니다. 집계를 여러 개 중첩해 사용할수 있을 뿐만 아니라 범위, 날짜, 위치 정보도 집계할 수 있습니다. 또한 엘라스틱서치는 인덱스를 활용해 분산 처리가 가능하기 때문에 SQL보다 더 많은 데이터를 빠르게 집계할 수 있습니다. [캐시] 캐시는 질의의 결과를 임시 버퍼에 두고 이후 처리해야 하는 같은 질의에 대해 매번 결과를 계산하는 것이 아니라 버퍼에 보관된 결과를 반환합니다. 일반적으로 힙 메모리의 1%를 할당하며, 엘라스틱서치의 conf 폴더 안의 elasticsearch.yml 파일을 수정해 활성화할 수 있습니다. # 힙 메모리의 2%를 캐시에 할당한 예 indices..
-
12. Query DSL의 주요 쿼리BackEnd/elasticsearch 2021. 10. 2. 16:40
1. Match All Query 가장 단순한 쿼리로서 일반적으로 색인에 저장된 문서를 확인할 때 사용합니다. POST movie_search/_search { "query": { "match_all": {} } } 2. Match Query 텍스트, 숫자, 날짜 등이 포함된 문장을 형태소 분석을 통해 텀으로 분리한 후 이 텀들을 이용해 검색 질의를 수행합니다. 검색어가 분석돼야 할 경우에 사용합니다. POST movie_search/_search { "query": { "match": { "movieNm": "그대 장미" # 형태소 분석을 통해 "그대", "장미" 라는 2개의 텀으로 분리 ( OR 연산 ) } } } 3. Multi Match Query Match Query와 기본적인 사용 방법은 동일..
-
11. Query DSL 구조 및 파라미터BackEnd/elasticsearch 2021. 10. 2. 15:05
엘라스틱서치로 검색 질의를 요청할 때는 Request Body 검색과 URI 검색 모두 _search API를 이용해 검색을 질의합니다. 하지만 Query DSL(JSON 구조 기반)을 이용하면 여러 개의 질의를 조합하거나 질의 결과에 대해 다시 검색을 수행하는 등 기존의 URI 검색보다 강력한 검색이 가능해집니다. 1. Query DSL 쿼리의 구조 # 요청 JSON 구조 { "size": # 리턴받는 결과의 개수 (기본값 : 10) "from": # 몇 번째 문서부터 가져올지 지정 (기본값 : 0) "timeout": # 검색을 요청해서 결과를 받는 데까지 걸리는 시간 너무 짧게 잡으면 전체 샤드에서 timeout을 넘기지 않은 문서만 결과로 출력하기에 상황에 따라 결과의 일부만 나올 수 있음 (기본..
-
10. 검색 APIBackEnd/elasticsearch 2021. 9. 25. 07:33
엘라스틱서치는 색인 시점에 Analyzer를 통해 분석된 텀(Term)을 Term, 출현빈도, 문서번호와 같이 역색인 구조로 만들어 내부적으로 저장합니다. 검색 시점에는 Keyword 타입과 같은 분석이 불가능한 데이터와 Text 타입과 같은 분석이 가능한 데이터를 구분해서 분석이 가능할 경우 분석기를 이용해 분석을 수행합니다. 이를 통해 검색 시점에도 텀을 얻을 수 있으며, 해당 텀으로 역색인 구조를 이용해 문서를 찾고 이를 통해 스코어를 계산해서 결과로 제공합니다. 엘라스틱서치에서 제공하는 검색 API는 기본적으로 질의(Query)를 기반으로 동작합니다. 검색 질의에는 루씬에서 사용하던 전통적인 방식의 URI 검색과 RESTful API를 이용한 Request Body 검색이 존재합니다. 1. 실습 ..
-
09. 문서관리 API(Document API)BackEnd/elasticsearch 2021. 9. 24. 18:50
엘라스틱서치에서 제공하는 대표적인 Document API Index API : 문서를 생성 Get API : 문서를 조회 Delete API : 문서를 삭제 Update API : 문서를 수정 Bulk API : 대량의 문서를 처리 Reindex API : 문서를 복사 1. 문서 파라미터 _id 문서를 생성할 때 기본적으로 ID가 반드시 필요하다. 문서 추가 시 ID를 지정하지 않으면 엘라스틱서치가 자동으로 ID를 부여한다. (UUID 형태의 값) _version 색인된 모든 문서는 버전 값을 가지고 있다. 기본적으로 버전은 1부터 시작해서 도큐먼트가 갱신/삭제될 때마다 증가한다. 직접 버전 값을 입력할 수 있으나 반드시 정숫값이어야 한다. op_type 일반적으로 ID 존재 시 update, 미존재 시..
-
08. 엘라스틱서치 분석기BackEnd/elasticsearch 2021. 9. 24. 18:00
엘라스틱서치는 루씬을 기반으로 구축된 텍스트 기반 검색엔진입니다. 루씬은 내부적으로 다양한 분석기를 제공하는데, 엘라스틱서치는 루씬이 제공하는 분석기를 그대로 활용합니다. 1. 분석기의 구조 1) CHARACTER FILTER (문장을 특정한 규칙에 의해 수정한다.) 문장을 분석하기 전에 입력 테스트에 대해 특정한 단어를 변경하거나 HTML과 같은 태그를 제거하는 역할을 하는 필터다. 해당 내용은 텍스트를 개별 토큰화하기 전의 전처리 과정이며, ReplaceAll() 함수처럼 패턴으로 텍스트를 변경하거나 사용자가 정의한 필터를 적용할 수 있다. 토크나이저 내부에서도 일종의 전처리가 가능하기에 상대적으로 활용도가 많이 떨어진다. 2) TOKENIZER FILTER (수정한 문장을 개별 토큰으로 분리한다.)..
-
07. 데이터 타입(Data Type)BackEnd/elasticsearch 2021. 9. 20. 09:50
1. Keyword 데이터 타입 키워드 형태로 사용할 데이터에 적합한 데이터 타입입니다. 별도의 분석기를 거치지 않고 원문 그대로 색인하기 때문에 특정 코드나 키워드 등 정형화된 콘텐츠에 주로 사용됩니다. 1) 검색 시 필터링되는 항목 2) 정렬이 필요한 항목 3) 집계해야 하는 항목 이 세 가지 경우에는 반드시 keyword 타입을 사용합니다. PUT movie_search_datatype/_mapping/_doc { "properties": { "multiMovieYn": { "type": "keyword" } } } (주요 파라미터) boost, doc_values, index, null_value, store 2. Text 데이터 타입 색인 시 지정된 분석기가 컬럼의 데이터를 문자열 데이터로 인식..
-
06. 메타 필드(Meta Fields)BackEnd/elasticsearch 2021. 9. 19. 21:55
메타 필드(Meta Fields)는 엘라스틱서치에서 생성한 문서에서 제공하는 특별한 필드입니다. 이것은 메타데이터를 저장하는 특수 목적의 필드로서 이를 이용하면 검색 시 문서를 다양한 형태로 제어하는 것이 가능합니다. { "_index": "elasticsearch", "_type": "_doc", "_id": "1", "_score": 1, "_source": { "실제 문서 정보" } } 1. _index 메타 필드 해당 문서가 속한 인덱스 이름을 담고 있습니다. 이를 이용해 검색된 문서의 인덱스명과 해당 인덱스에 몇 개의 문서가 있는지 확인할 수 있습니다. 2. _type 메타 필드 해당 문서가 속한 매핑의 타입 정보를 담고 있습니다. 이를 이용해 인덱스 내부에서 타입별로 몇 개의 문서가 있는지 확..