-
01. 엘라스틱서치(elasticsearch)BackEnd/elasticsearch 2021. 9. 18. 16:35반응형
엘라스틱서치(elasticsearch)는 루씬 기반의 검색 엔진입니다. 검색 엔진(search engine)이란 광활한 웹에서 정보를 수집해 검색 결과를 제공하는 프로그램이며, 이를 기반으로 구축된 시스템을 통칭해서 검색 시스템(search system)이라고 합니다. 검색 서비스(search service)는 검색엔진을 기반으로 구축한 검색 시스템을 활용해 검색 결과를 제공하는 것을 말합니다.
엘라스틱서치(elasticsearch)는 NoSQL(No Structured Query Language)의 일종으로서 분류가 가능하고 분산 처리를 통해 실시간에 준하는 빠른 검색이 가능합니다. 기존 데이터베이스로는 처리하기 어려운 대량의 비정형 데이터도 검색할 수 있으며, 전문 검색(Full Text)과 구조 검색 모두를 지원합니다. 기본적으로는 검색엔진이지만 MongoDB나 Hbase처럼 대용량 스토리지로도 활용할 수 있습니다.
1. 검색 시스템의 구성 요소
1) 수집기 : 웹사이트, 블로그, 카페 등 웹에서 필요한 정보를 수집하는 프로그램
2) 색인기 : 수집된 데이터를 검색 가능한 구조로 가공하고 저장하는 역할, 색인기는 다양한 형태소 분석기를 조합해 정보에서 의미가 있는 용어를 추출하고 검색에 유리한 역색인 구조(Inverted Index)로 데이터를 저장
3) 스토리지 : 데이터베이스에서 데이터를 저장하는 물리적인 저장소
4) 검색기 : 사용자 질의를 입력받아 색인기에서 저장한 역색인 구조에서 일치하는 문서를 찾아 결과로 반환, 질의와 문서가 일치하는지는 유사도 기반의 검색 순위 알고리즘으로 판단
2. 엘라스틱서치와 관계형 데이터베이스 비교
엘라스틱서치 관계형 데이터베이스 인덱스 Index 데이터베이스 Database 샤드 Shard 파티션 Partition 타입 Type 테이블 Table 문서 Document 행 Row 필드 Field 열 Column 매핑 Mapping 스키마 Schema Query DSL SQL 기능 엘라스틱서치 데이터베이스 데이터 조회 GET SELECT 데이터 생성 PUT INSERT 인덱스 업데이트, 데이터 조회 POST UPDATE, SELECT 데이터 삭제 DELETE DELETE 인덱스 정보 확인 HEAD - 3. 엘라스틱서치 장점
1) 오픈소스 검색엔진
2) 전문 검색 : 내용 전체를 색인해서 특정 단어가 포함된 문서를 검색하는 것
3) 통계 분석
4) 스키마리스(Schemaless) : 데이터베이스의 스키마와는 다르게 정형화되지 않은 형태의 문서도 자동으로 색인하고 검색하는 것
성능과 밀접한 연관이 있기에 가급적 사용하지 말 것
> action.auto_create_index: false (자동 인덱스 생성 방지)
> index.mapper.dynamic: false (특정 컬럼의 자동 매핑 생성 비활성화)
5) RESTful API : HTTP 기반의 RESTful API를 지원하고 응답에도 JSON 형식을 사용해 개발 언어, 운영체제, 시스템에 관계없이 이기종 플랫폼에서도 이용 가능
6) 멀티테넌시(Multi-tenancy) : 단일 소프트웨어 인스턴스로 다수의 사용자 그룹에 서비스를 제공할 수 있는 소프트웨어 아키텍처
7) Document-Oriented : 여러 계층의 데이터를 JSON 형식의 구조화된 문서로 인덱스에 저장
8) 역색인(Inverted Index) : 낱말이나 숫자와 같은 내용물로부터 매핑 정보를 저장하는 색인 데이터 구조
9) 확장성과 가용성 : 분산 구성 가능
4. 엘라스틱서치 단점
1) 실시간이 아니다. 일반적으로 색인된 데이터는 통상적으로 1초 뒤에나 검색이 가능해진다.
2) 트랜잭션과 롤백 기능을 제공하지 않는다.
3) 데이터의 업데이트를 제공하지 않는다. 업데이트 명령이 요청될 경우 기존 문서를 삭제하고 변경된 내용으로 새로운 문서를 생성하는 방식을 사용한다.
반응형'BackEnd > elasticsearch' 카테고리의 다른 글
06. 메타 필드(Meta Fields) (0) 2021.09.19 05. 매핑 API (0) 2021.09.19 04. 용어 (0) 2021.09.19 03. 키바나 설치(kibana) (0) 2021.09.18 02. 엘라스틱서치 설치 (0) 2021.09.18