일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- db
- Baekjoon
- Elasticsearch
- 백준
- 개발자
- 알고리즘
- 코딩
- framework
- cleancode
- ES
- 읽기쉬운코드
- 애자일
- 그리디알고리즘
- JPA
- 코딩테스트
- Java
- database
- 코드
- 그리디
- 개발
- 애자일기법
- API
- 스프링
- 자바
- Spring
- 애자일프로그래밍
- 클린코드
- 엘라스틱서치
- 데이터베이스
- 프레임워크
- Today
- Total
목록전체 글 (139)
시뻘건 개발 도전기
텍스트 분석 개요 엘라스틱서치는 루씬을 기반으로 구축된 텍스트 기반 검색엔진이다. 루씬은 내부적으로 다양한 분석기를 제공하는데 엘라스틱서치는 루씬이 제공하는 분석기를 그대로 활용한다. 그렇기 때문에 이 분석기를 어떻게 동작하는지 이해하고 구성하는 것이 중요하다. "우리나라가 좋은나라, 대한민국 화이팅" 문장이 있다고 가정해보자. 이 문장을 검색하기 위해 "대한민국"이라고 입력한다면 "우리나라"라는 단어가 존재하지 않기 때문에 검색이 되지않는다. 엘라스틱서치는 문서를 색인하기 전에 해당 문서의 필드 타입이 무엇인지 확인하고 텍스트 타입이면 분석기를 통해 이를 분석한다. 텍스트가 분석되면 개별 텀으로 나뉘어 형태소 형태로 분석이 수행된다. 해당 형태소는 특정 원칙에 의해 필터링되어 단어가 삭제되거나 추가/수..
필드에는 다음과 같은 데이터 타입을 지정할 수 있다. - keyword, text 같은 문자열 데이터 타입 - date, long, double, integer, boolean, ip 같은 일반적인 데이터 타입 - 객체 또는 중첩문과 같은 JSON 계층의 특성의 데이터 타입 - geo_point, geo_shape 같은 특수한 데이터 타입 Keyword 타입 별도의 분석기를 거치지 않고 원문 그대로 색인되기 때문에 특정 코드나 키워드 등 정형화된 콘텐츠에 주로 사용된다. 엘라스틱서치의 일부 기능은 형태소 분석을 하지 않아야만 사용이 가능한데 이 경우에도 Keyword 타입이 사용된다. PUT movie_search_datatype/_mapping/_doc { "properties": { "multiMov..
메타 필드(Meta Fields)는 메타 데이터를 저장하는 특수 목적의 필드로서 검색시 문서를 다양한 형태로 제어하기 위해 사용되는 필드다. 아래 예제에서 보았을 때, 실제 문서 정보를 담고있는 항목은 _source항목이다. 그 밖에 _index, _type, _id, _score 항목은 엘라스틱 서치가 직접 생성한 메타 필드다. (언더바('_')로 시작하는 항목은 전부 다 메타필드라고 봐도 무방할 듯..?) { "_index": "movie_search", "_type": "_doc", "_id": "8", "_score": 1, "_source": { "movieCd": "20178401", "movieNm":"검객", "movieNmEn": "", "prdtYear": "2017", "openDt"..
엘라스틱서치에서 색인할 때 데이터 유형에 따라 필드에 적절한 데이터 타입을 지정하는 과정을 맵핑이라고한다. 맵핑은 색인될 문서의 데이터 모델링이라고도 할 수 있다. 만약 맵핑 설정을 하지 않으면 엘라스틱서치가 자동으로 필드를 생성하고 타입을 결정한다. 필드 데이터 타입이 자동으로 지정될 경우 실제 운영환경에서 unknown 이슈가 발생될 수도 있다. 맵핑 api 맵핑은 색인시 데이터가 어디에 어떻게 저장되는가를 결졍하는 설정이다. 문서에 존재하는 필드의 속성을 정의할 때 각 필드 속성에는 데이터 타입과 메타데이터가 포함된다. 이를 통해 색인 과정에서 문서가 어떻게 역색인으로 변환되는지를 상세하게 정의할 수 있다. 맵핑 정보를 설정할 때는 아래와 같은 사항들을 고려해야한다. 꼭 명시적인 맵핑 설정을 통해 ..
api의 종류 앞서 계속 언급되었듯이 Elasticsearch는 RESTful 방식의 api를 제공하며 json 기반으로 통신한다. 아래와 같이 엘라스틱서치에서 api를 제공한다. 인덱스 관리 api: 인덱스 관리 문서 관리 api: 문서 추가/수정/삭제 검색 api: 문서 조회 집계 api: 문서 통계 문서를 색인하기 위해서는 기본적으로 인덱스를 생성해야한다. 인덱스를 통해 입력되는 문서의 필드를 정의하고 각 필드에 알맞는 데이터 타입을 지정한다. 이 과정을 통해 효율적으로 색인이 가능하다. index vs indices 색인은 데이터가 토큰화되어 저장된 자료구조를 의미한다. 'index'를 번역하면 '색인'인데, elasticsearch에서 인덱스라는 영어를 색인과 다른 의미로 사용한다. index:..
엘라스틱서치의 기본 용어 엘라스틱서치의 데이터는 [그림 1]과 같이 인덱스, 타입, 문서, 필드 구조로 구성된다. 인덱스 인덱스는 데이터를 저장하는 공간이다. 하나의 인덱스는 하나의 타입만 가지며 하나의 물리적인 노드에 여러 개의 논리적인 인덱스를 생성할 수 있다. 엘라스틱서치는 인덱스 생성 시 기본적으로 5개의 프라이머리 샤드와 1개의 레플리카 샤드 세트를 생성한다. 각각의 샤드 수는 인덱스를 생성할 때 옵션을 이용해 변경할 수 있다. 인덱스의 이름은 모두 소문자여야한다. 만약 인덱스가 없는 상태에서 데이터가 추가된다면 데이터를 이용해 인덱스가 자동으로 생성된다. 샤드 색인된 문서는 하나의 인덱스에 담긴다. 인덱스 내부에 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나뉘어 구성되는데, 이 파티..
키바나는 엘라스틱에서 제공하는 데이터 시각화 프로그램이다. 키바나를 이용하면 엘라스틱에 갯인된 데이터를 검색하거나 문서를 추가하거나 하는 등의 기능을 손쉽게 구현할 수 있다. Download Kibana Free | Get Started Now Download Kibana or the complete Elastic Stack (formerly ELK stack) for free and start visualizing, analyzing, and exploring your data with Elastic in minutes. www.elastic.co bin 디렉토리에 kibana와 kibana.bat 파일이있다. 환경에 맞게 실행하되, 키바나가 실행하기 전에 elasticsearch가 실행되고 있어야한다..
엘라스틱서치로 실제 서비스를 운영할 때는 최소 3개 이상의 물리적인 노드로 클러스터를 구축하는 것이 좋다. 테스트 모드에서는 목적성이 다르기 때문에 싱글 모드로 구성하기도한다. Elasticsearch 설치 엘라스틱서치는 자바로 개발되었다. 그 말은 java runtime이 필요하다는 의미로 JRE만 설치해도 무방하나 JDK를 설치하는 것을 권장하고있다. 참고로 엘라스틱서치 8 버전부터 java 17을 권장한다. (java를 설치하는 과정은 스킵.) Download Elasticsearch Download Elasticsearch or the complete Elastic Stack (formerly ELK stack) for free and start searching and analyzing in m..