1] 검색 시스템의 이해
: 대용량 데이터를 기반으로신뢰성 있는 검색 결과를 제공하기 위해 검색엔진을 기반으로 구축된 시스템을 통칭
: 대표적으로 서비스로서의 웹 검색사이트(구글, 네이버 등)등이 있으며 프로그램으로서는 엘라스틱서치, 솔라등이 있다.
- 검색서비스 > 검색시스템 > 검색엔진 → 검색사이트 > 검색기능 > 도구
1.1] 검색시스템 구성요소
- 수집기 : 웹상에서 필요한 정보를 수집하는 프로그램
- 스토리지 : 색인 처리된 데이터를 스토리지에 보관하는 저장소
- 색인기 : 검색엔진이 수집한 데이터를 검색 가능한 구조로 가공하고 저장하는 역할을 함.
- 검색기 : 사용자 질의를 입력받아 색인기에 저장한 역색인 구조에서 일치하는 문서를 찾아 결과로 반환 함.
1.2] 엘라스틱서치 장점
- 오픈소스 검색엔진 : 루씬을 기반으로 개발된 오픈소스 검색엔진 > 많은 사람들이 기여하고 발전해감
- 전문 검색 : 내용 전체를 색인해두어 특정 단어가 포함된 문서를 검색할 수 있다.
- 통계 분석 : 엘라스틱서치와 키바나를 연동하여 로그를 시각화하고 분석할 수 있다.
- 스키마리스 : 정형화되지 않은 문서(여러 다양한 형태의 문서)도 자동으로 색인하고 검색할 수 있다.
- RESTful API : HTTP 기반의 RESTful API를 지원하고 요청뿐 아니라 JSON형식을 이용하기 때문에 다양한 플랫폼에서 사용 가능
- 멀티테넌시 : 상이한 인덱스일지라도 검색 필드만 같다면 한번에 조회가 가능
- Document-Oriented : 여러계층의 데이터를 JSON형식의구조화된 문서로 인덱스에 저장할 수 있다.
- 역색인 : 엘라스틱 서치는 역색인을 지원하여 키워드 검색시 속도가 더 좋다.
- 확장성과 가용성
1.3] 엘라스틱서치 단점
- 실시간이 아니다(일반적으로 색인 처리 후 1초뒤에 검색 가능) - 내부적으로 커밋과 플러시와 같은 작업이 있기 때문
- 트랜잭션과 롤백기능을 제공하지 않음 - 분산시스템으로 구성되었기 때문에 클러스터 성능향상을 우선시함.
- 데이터의 업데이트를 제공하지 않음 - 삭제후 변동된 내용을 생성
2] 엘라스틱서치 구성 개념
- 인덱스 : 데이터 저장공간 - 하나의타입만 가지며 여러 물리적 노드에 여러개의 논리적 인덱스를 생성이 가능하고 엘라스틱서치는 멀티테넌시하기 때문에 여러개의 인덱스에서 동시 검색이 가능하다.
- 샤드 : 색인된문서는 하나의 인덱스에 담기는데 해당 데이터는 여러개의 파티션(샤드)로 나뉘어 저장된다.
- 타입 : 인덱스의논리적 구조가 된다.
- 문서 : 데이터가 저장되는 최소의 단위가 되며 기본적으로 JSON 형식으로 데이터가 저장된다.
- 필드 : 문서를 구성하기 위한 속성으로 목적에 따라 다수의 데이터 타입을 갖을수 있다.
- 매핑 : 문서의 필드와 필드의속성을 정의하고 그 색인방법을 정의하는 프로세스
2.1]노드의 종류
: 클러스터는 물리적인 노드 인스턴스들의 모임으로 클러스터는 모든 노드의 검색과 색인 작업을 관장하는 논리적인 개념으로 분산처리를 하기위해 다양한형태의 노드들로 구성해야함.
- 마스터노드 : 클러스터 관리 / 노드 추가와 제거 같은 클러스터의 전반적인 관리를 담당
- 데이터노드 : 실질적인 데이터 저장 / 검색과 통계 같은 데이터 관련 작업 수행
- 코디네이팅 노드 : 사용자의 요청만 받아서 처리 / 클러스터 관련요청은 마스터에 전달 / 데이터 관련 요청은 데이터 노드에 전달
- 인제스트 노드 : 문서의 전처리 작업 전달 / 인덱스 생성전 문서의 형식을 다양하게 변경.
2.2] 클러스터, 노드, 샤드
2.3] 엘라스틱서치에서제공하는 주요 API
- 인덱스 관리 API
- 문서 관리 API
- 검색 API
- 집계 API
[스키마리스 기능은 가급적 사용 X]
: 데이터를 생성시 인덱스가 없으면 자동적으로 인덱스가 생성
> 세부적인 필드 정보가 빠져 매핑되지 않아 추후 검색시 결과가 누락될 수 있다.
> 모든 필드가 멀티필드로 구성되어 공간의 낭비를 초래할 수 있다.
> 검색의 품질이 떨어질 수 있다.(text의 경우 Standard Analyzer가 사용되어 조사의 구분을 하지 못함)
[인덱스 생성]
- PUT 메소드를 사용
- 인덱스의 매핑정보는 한번 생성되면 바꿀수 없어 삭제후 다시해야함
[인덱스 삭제]
- DELETE 메소드를 사용
2.4] 문서관리 API
- 문서 생성 : POST 메소드를 사용하며 id를 설정해준다.
- id를 미설정시 엘라스틱서치에 _id값이 UUID를 통해 무작위로 생성된다.
- 문서 조회 : GET 메소드를 사용하며 생성했던 id를 지정해 조정한다.
- 문서 삭제 : DELETE 메소드를 사용하며 생성했던 id를 지정하여 삭제한다.
2.5] 검색 API
- HTTP URI 형태의 파라미터를 URI에 추가해 검색하는 방법
- RESTful API 방식인 QueryDSL을 사용해 요청본문에 질의 내용을 추가해 검색하는 방법
2.6] 집계 API
'Computer > Study' 카테고리의 다른 글
엘라스틱서치 실무가이드(5-1) (0) | 2020.01.09 |
---|---|
엘라스틱서치 실무가이드(4-2) (0) | 2020.01.08 |
엘라스틱서치 실무가이드(4-1) (0) | 2019.12.19 |
엘라스틱서치 실무가이드(3-2) (0) | 2019.12.10 |
엘라스틱서치 실무가이드(3-1장) (0) | 2019.12.04 |