본문 바로가기

Elastic Search

Elastic Search 개요 및 간단한 CRUD

분산형 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' 카테고리의 다른 글