1. RDB ElasticSearch 비교

RDB ElasticSearch
Database Index
Table Type
Row Document
Column Field

 

 

2. ElasticSearch Object 생성하기(Indexing) - CRUD에서 Create에 해당
   - ElasticSearch 오브젝트의 생성은 indexing을 이용해서 생성함.
   - HTTP 의 PUT이나 POST를 이용해서 ElasticSearch 오브젝트를 생성한다.

   - 문법

     curl -X PUT http://localhost:9200 / index        / type /    object_id -d '{ <document data> }'
                                                            인덱스      타입        Object ID       JSON형태의 Document 데이터

  - document에 해당 타입의 ID가 없으면 insert,있으면 update를 수행한다.
  예)
  curl -XPUT "http://localhost:9200/movies/movie/1" -d ' { "title": "Zootopia", "year": "2016", "genre":["action", "animation"] }'

   - Movies라는 index(데이터베이스)에 데이터가 저장됨

   - movie라는 type(테이블)에 데이터가 저장됨

   - Field(컬럼)는 title, year, genre가 있음

   - Document(Row)에는 title이 주토피아, 개봉년도(year)가 2016년, 장르(genre)가 액션 및 애니매이션에 해당하는 데이터가 있음

==>> 실습

   1) ElasticSearch 서버 실행  (bin 파일 하위의 elasticsearch 실행)
       [ec2-user@ ] elasticsearch-2.3.4]$ cd bin
       [ec2-user@ bin]$ ./elasticsearch -d
   2) 명령어 실행

        curl -XPUT "http://localhost:9200/movies/movie/1" -d ' { "title": "Zootopia", "year": "2016", "genre":["action", "animation"] }'

    - 명령어로 실행시 하위에 결과가 리턴된다.

   3) Sense에서 실행방법

- 상단에 본인 아이피:포트번호(9200) 입력 예) 10.20.30.40:9200

- 왼쪽에 동일한 명령어 입력 후, 오른쪽 화살표(▶)를 누르면 실행이 됨 (참고:단축키 ctrl+enter)

- 오른쪽에 명령어 실행에 대한 결과가 표시된다.

  4) 결과값 select 해보기

      - select의 경우, HTTP GET 메소드 이용함

      - 명령어 : curl -XGET 'http://localhost:9200/movies/movie/1'

     

    - Sense에서 실행

   

* 참고) elasticsearch에서의 index의 의미는 때에 따라서 다음과 같이 해석될 수 있음
   -명사 : RDB에서 database와 유사.
  - 동사 : INSERT와 유사
  - inverted index : RDB에서 사용하는 index와 유사한 개념. ElasticSearch와 Lucene은 inverted index라는 구조를 사용함.

 

 

3. search endpoint

- Elasticsearch에서 검색을 위해서, '_search'라고 하는 endpoint를 사용한다.

- 선택적으로 index와 type을 사용함

- URL 요청은 다음과 같이 보냄 : 인덱스/타입/_search

예)  curl -XGET 'http://localhost:9200/_search' : 모든 인덱스들과 타입을 검색을 검색

curl -XGET 'http://localhost:9200/movies/_search' : movies 인덱스에서 모든 타입을 검색을

curl -XGET 'http://localhost:9200/movie/_search' : movices 인덱스 내 movie 타입에서의 document 검색

참고) ElasticSearh에서 get 후에 응답은 hits라는 배열안에 포함한다. 기본적으로 검색은 상위 10개의 결과를 반환한다.