본문 바로가기

Big Data/Elastic stack

elastic stack #2 elasticsearch 설치 & quick start



1. elasticsearch 설치
정말 쉽게 설치가 가능하다. https://www.elastic.co/downloads 에서 elasticsearch를 다운받아 압축을 해제한다.
글 작성 기준 최종 버전인 5.2 로 예제를 작성할 것이다. JAVA 1.8이 기본적으로 설치가 되어있어야 한다.
cluster 구성 및 elasticsearch 설정을 변경하기 위해 설정파일의 수정이 필요하지만 지금 예제에서는 local에서 간단하게 설치할 것 이기 때문에 따로 설정파일의 변경이 필요하지 않다.

2. elasticsearch 실행
설치된 폴더에서 bin 폴더에 실행파일이 있다. os에 따라 실행 파일이 다르다. mac osx기준으로 예제를 설명하겠다. (windows는 .bat 파일을 사용)

실행 파일을 다음과 같다.
bin/elasticsearch

이제 서버가 실행이 잘되고 있는지 확인해 보자. 

> http://localhost:9200/
{
  "name" : "_OD8gDQ",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "1msBO1_8SceCiRiCYeNZLg",
  "version" : {
    "number" : "5.1.1",
    "build_hash" : "5395e21",
    "build_date" : "2016-12-06T12:36:15.409Z",
    "build_snapshot" : false,
    "lucene_version" : "6.3.0"
  },
  "tagline" : "You Know, for Search"
}

RESTFull API를 지원하기 때문에 브라우저나 curl을 사용하여 확인할 수 있다. localhost:9200으로 확인 가능하며, 9200 포트는 default 값이다.

3. Document 생성 및 조회
데이터베이스를 설치하고 테스트를 하기 위해 database, table을 만들고 데이터를 저장한 후 조회 해 본다. 이 예제에도 동일한 프로세스를 진행 해 보자.
모든 액션은 RESTful API로 되어 있다. rdb에서는 table을 무조건 생성해야만 데이터 저장이 되지만 elasticsearch에서는 document를 입력하면 자동으로 index, type이 생성된다. (단, 따로 index별 설정이 필요하다면 index를 먼저 만들어서 template 설정 등 선 작업을 해야한다)

elasticsearch의 RESTful API 형식은 아래와 같다. 
http://host:port/(index)/(type)/(action|id)

3.1 데이터 입력

document 저장하기
curl -XPUT localhost:9200/users/user/1 -d'
   "name": "MS ji",
  "age": 30
}

PUT을 사용하여, index/type/document 구조로 json 형식으로 데이터를 저장한다.

3.2 데이터 조회
get 메소드로 {index}/_search 이 기본 검색이다. 이떄 ?pretty를 붙히면 좀 이쁘게(?) json 형식을 볼 수 있다.

curl -XGET http://localhost:9200/users/_search?pretty
{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "users",
        "_type" : "user",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "name" : "MS Ji",
          "age" : 30
        }
      }
    ]
  }
}