분산형 RESTful 검색 및 분석 엔진입니다. 줄여서 ES라고도 부릅니다. 분산형이라는 건 클러스터 환경을 구성할 수 있다는 이야기입니다. 실질적으로 ELK Stack에서는 Lucene 검색 엔진 기반의 NoSQL 데이터베이스로서 활용됩니다
* ELK Stack = ElasticSearch + Logstash + Kibana
Elastic Search 장점
- 속도, 확장성, 안정성, 유연성
> 속도
: JSON문서 형식으로 저장, 모든 필드는 기본적으로 인덱싱되며, 모든 인덱스들은 단일 쿼리로 빠르게 사용할 수 있다.
: 역인덱스, BKD tree 등으로 속도가 빠르다
> 확장성
: 설치와 서버 확장이 매우 편리
> 유연성
: 정형/비정형/위치정보/Metric 등 원하는 방법으로 다양한 유형의 검색을 수행하고 결합할 수 있습니다
활용
: 검색에 많이 사용
Riot에서 게시판과 1:1문의사항에서 사용
RDBMS에서는 문자열로 검색하면 매우 느려지는 현상이 있음
> 기존 RDBMS는 문자열 검색시 like검색으로 접근되어 성능이 떨어짐
> elasticsearch의 경우 문자를 자동 인덱싱하여 검색시 인덱스 검색으로 RDBMS보다 성능상 유리
- 관계형 데이터 베이스와 Elastic Search 용어 비교

- 관계형 데이터 베이스와 Elastic Search 용어 비교2
index 생성
> curl -XPUT localhost:9200/원하는 이름
* Index명칭은 대문자 입력시 오류
Index 조회
1. 전체조회
> curl -XGET localhost:9200/_cat/indices?v
2. 개별조회
> curl -XGET localhost:9200/index명칭
Index 삭제
> curl -XDELETE localhost:9200/index명칭
data입력
> curl -XGET localhost:9200/index명칭/type명칭/ID -H "Content-Type: application/json" -d "{\"Field명칭\":\"내용\"}"
* GET 대신에 POST를 사용해서 입력이 가능하나 POST의 경우 ID를 임의의 값으로 지정되기 때문에 따로 지정하지 않는다.
data 수정
1. 해당 Document 전체를 수정하는 경우
> curl -XPOST localhost:9200/index명칭/type명칭/ID/_update -H "Content-Type: application/json" -d{"\"doc\":{\"Field명칭\":\"변 경할 내용\"}}"
2. Document내 특정 source를 수정하는 경우
> curl -XPOST localhost:9200/index명칭/type명칭/ID/_update -H "Content-Type: application/json" -d"{\"script\":\"ctx._source.source명칭 = 변경할 내용\"}"
data 조회
1. ID로 조회
> curl -XGET loaclhost:9200/index명칭/type명칭/ID
2. search 조회(REST request URl의 파라미터 방식)
> curl -XGET localhost:9200/index명칭/[type명칭 (복수 가능)]/_search?q=찾고자하는속성명:찾고자하는내용
3. REST request Body 방식
ex) bank index에서 Field 명이 account_number, balance인 모든 doucment를 조회
curl -XPOST 'localhost:9200/bank/_search?pretty' -d'
{
"query": { "match_all": {} },
"_source": ["account_number", "balance"]
}'
data 삭제
> curl -XDELETE localhost:9200/index명칭/type명칭/ID
'Elastic Search' 카테고리의 다른 글
mapping, aggregation, 추가적인 검색 (0) | 2019.09.09 |
---|