1. 정의
- Apache Lucene(아파치 루씬) 기반의 Java 오픈소스 분산 검색 엔진으로, 프로그램으로서의 검색엔진이라고 한다.
- 프로그램으로서의 검색엔진= 현재 가지고 있는 데이터 중에서 특정한 데이터를 검색할 수 있는 기능을 제공하는 것
2. 기본 구성
데이터 -> 수집 -> 전처리 -> 인덱싱 -> 시각화
3. 장점
1) 속도: 전문 검색(full-text)을 위한 역 인덱스(inverted-index) 구현
- 역 인덱스(inverted-index): 인덱스는 관계형 데이터베이스에서 칼럼에다 인덱스를 걸어 select 하는 데 있어 성능을 향상시킨다. 하지만 인덱스가 걸려 있지 않은 컬럼에 대해서는 Fullscan을 해버림으로 검색이 느려진다. 데이터 인덱싱 시에 조금 더 인간의 사고와 가깝게 체계를 구성한다.
-전문 검색(Fulltext): 특정 단어가 어느 도큐먼트에 위치하는지 빠르게 찾아낼 수 있음으로 관계형 데이터베이스보다 더 효율적으로 fulltext search를 수행할 수 있다.
2) 확장성: 노드 구성의 수평적 확장 용이하다.
3) 유연: 숫자, 텍스트, 위치정보, 정형, 비정형 모든 유형의 데이터를 수용한다.
4) 복원: 분산 저장 설계로 하드웨어 오류나 네트워크 단절에 안전하다.
4. 관계형 데이터베이스와 다른 점
Relational DB | Elasticsearch |
SELECT | GET |
UPDATE | PUT |
INSERT | POST |
DELETE | DELETE |
Relational DB | Elasticsearch |
데이터베이스(Database) | 인덱스(Index) |
테이블(Table) | 타입(Type) |
행(Row) | 문서(Document) |
열(Column) | 필드(Field) |
스키마(Schema) | 매핑(Mapping) |
* Query DSL를 자세히 살펴보자
Query DSL: json 포맷으로 query를 만들어서 검색
- Query 절은 Query Context 또는 Filter Context에서 사용되는지 여부에 따라 다르게 동작한다
- Query Context: document가 얼마나 잘 일치하는지를 _score( 관련성 점수, relevance score )로 표현
- Filter Context: 답은 true 또는 false이며 점수는 계산하지 않는다.
실행하기 위해서는 json 파일을 만들어서 파일을 수정하고 명령어는 다음과 같이 입력한다.
# curl -XGET 'localhost:9200/bank/account/_search?pretty' -H 'Content-Type: application/json' -d @query.json |
match_all Query는 지정된 index의 모든 document를 검색하는 방법이다.
#vi query.json { "query":{ "match_all":{} } } |
5. 플러그인
버전 | 플러그인 | 정의 | 파일 위치 |
Elasticsearch2.4 | Shield | /shield/users_roles | |
Elasticsearch5.0 이상 |
X-Pack | 보안, 알림, 모니터링, 보고, 그래프 기능을 설치하기 편리한 단일 패키지로 번들 구성한 Elastic Stack 확장 프로그램 | /x-pack/users_roles |
Search-Guard | Search Guard는 엘라스틱서치 및 키바나에서 SSL 기반으로 인증 및 권한 제어를 하는 플러그인 | /sgconfig/sg_internal_users.yml |
# 다음으로 설치하는 방법
참고
https://www.bespinglobal.com/download/company_info/elastic_info.pdf
https://www.youtube.com/watch?v=B1Aq2GQ4E78&list=PLVNY1HnUlO24LCsgOxR_eK2Yi4sOgH9Pg&index=3
'OS > Database' 카테고리의 다른 글
[NoSQL] MongoDB 설치하기 (Ubuntu 16.04) (303) | 2022.01.21 |
---|---|
[DBMS] Elasticsearch DB(엘라스틱서치) 설치방법 With Ubuntu (431) | 2022.01.18 |
[DBMS] NoSQL 특징 및 종류 (1731) | 2022.01.17 |
[DBMS] Couchbase Database 기본지식 및 설치방법 (1655) | 2022.01.17 |
[DBMS] CouchDB 정의 및 특징 (552) | 2022.01.13 |