기은P
시간이 멈추는 장소
기은P
  • Programming (272)
    • 개발노트 (1)
    • FrontEnd (56)
      • ES&JS 문법 (14)
      • HTML&CSS (4)
      • React 기본 (18)
      • React 심화 (12)
      • React 이슈 (2)
      • Project 연습 (1)
      • Next.js (5)
    • Backend&Devops (33)
      • AWS (2)
      • Docker (9)
      • Jenkins (6)
      • Nginx (6)
      • Node.js (1)
      • ElasticSearch (5)
      • 프레임워크&아키텍처 (2)
      • 암호화 (0)
      • 기타 (2)
    • 알고리즘 (3)
    • C# (8)
      • WPF (8)
    • Java (51)
      • 순수 Java (18)
      • RDF&Jena (12)
      • RCP&GEF (9)
      • JMX (5)
      • JMapper (3)
      • 오류해결 (4)
    • Database (21)
      • RDBMS (9)
      • NoSQL (2)
      • TSDB (1)
      • GraphQL (1)
      • Hibernate (3)
      • 데이터베이스 이론 (4)
      • Redis (1)
    • 프로토콜 (11)
      • Netty (4)
      • gRPC (5)
      • 프로토콜 개념 (2)
    • Server (4)
      • Linux (4)
    • 2020 정보처리기사 필기 (43)
      • 목차 (1)
      • 기출문제 (1)
      • 1과목 - 소프트웨어 설계 (6)
      • 2과목 - 소프트웨어 개발 (7)
      • 3과목 - 데이터베이스 구축 (8)
      • 4과목 - 프로그래밍 언어 활용 (7)
      • 5과목 - 정보시스템 구축 관리 (10)
    • 2020 정보처리기사 실기 (31)
      • 목차 (4)
      • 기출예상문제 (19)
      • 실기요약 (8)
    • 빅데이터분석기사 필기 (4)
      • 목차 (0)
      • 필기 요약 (3)
    • 전기 공학 (1)
      • CIM (1)
    • 산업자동화시스템 (3)
      • SCADA (1)
      • OPC UA (2)
    • 디자인패턴 (1)
    • 휴지통 (0)

공지사항

  • 공지사항/포스팅 예정 항목

최근 댓글

최근 글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
기은P

시간이 멈추는 장소

[ElasticSearch] Insert(생성), Search(조회) 기본적인 CRUD
Backend&Devops/ElasticSearch

[ElasticSearch] Insert(생성), Search(조회) 기본적인 CRUD

2022. 7. 18. 15:10
반응형

1. 개요

RDB를 하다가 ElasticSearch를 찾아보는데, 개념 자체가 RDB랑은 많이 달라서 최대한 알기 쉽게끔 필요한 기능만 정리를 해보려고 이 글을 작성해봅니다.

클러스터, 샤드랑 노드, 인덱스, 다큐먼트 등 개념적인 부분은 이 글에서는 다루지 않겠고, 아래 가이드북 링크를 참고해주시길 바랍니다.

https://esbook.kimjmin.net/03-cluster/3.2-index-and-shards

ElasticSearch 버전은 7.0버전 이상의 버전으로 진행합니다. 7.0버전부터 type이 사라졌기 때문입니다.

 

 

2. 클러스터 관련 Rest API

1) 클러스터 상태 조회

# curl -XGET http://localhost:9200/_cluster/health?pretty=true

* status: yellow = 모든 데이터가 읽기/쓰기 가능한 상태입니다. 다만, replica shard(복제 샤드)가 배정되지 않은 상태이므로 검색 성능에 영향이 있을 수 있습니다를 알려주는 상태 표시입니다. 복제 샤드가 있으면 초록색으로 나옵니다.

 

 

2) 클러스터 인덱스 조회

# curl -XGET http://localhost:9200/_cat/indices?v
# curl -XGET http://localhost:9200/_cat/shards?v

예제들 가운데서 _cat이라는 url 속성이 사용자가 생성한 인덱스인줄 알았는데, elastic search에서 제공하는 고정된 기본 기능입니다!

* 인덱스라는 단어가 여러 뜻으로 사용되기 때문에 데이터 저장 단위인 인덱스는 인디시즈(indices)라고 표현하기도 합니다.

 

 

 

3) index 생성

# curl -XPUT 'localhost:9200/test?pretty'

test라는 인덱스를 생성합니다.

RDB와 다르게 create, insert 이런 문법은 사용하지 않고 PUT REST API를 통해 생성합니다.

* pretty는 결과(response)를 잘 정리해서 보여주는 옵션입니다.

* acknowledged : true면 결과가 성공되었다는 의미입니다.

# curl -XGET http://localhost:9200/_cat/indices?v

인덱스를 생성한 후, 2번의 인덱스를 다시 조회해봅니다.

 

 

 

4) document 생성(PUT)

# curl -XPUT 'localhost:9200/test2/_doc/1?pretty' -H 'Content-Type: application/json' -d '{
"name": "james"
}'

PUT REST API를 이용해서 document를 생성합니다.

test2라는 index에 id는 1인 곳에 name이 james라는 데이터를 생성했습니다.

* PostMan이라는 프로그램을 사용하고 있습니다.

* 동일한 URL에 다른 내용의 document를 입력하게 되면 위와 같이 "result" : "update"라는 결과를 받게됩니다.

 

 

 

5) Document 조회 (GET)

데이터가 생성이 되었다면, 해당 인덱스의 document를 조회해봅니다.

# curl -XGET 'http://localhost:9200/test2/_doc/1?pretty'

* url에 있는 _search는 query DSL으로 사용되는 API이며, 뒤에 query를 명시함에 따라 다른 결과를 받아볼 수 있습니다.

 

Elasticsearch에서는 단일 도큐먼트별로 고유한 URL을 갖습니다. 도큐먼트에 접근하는 URL은 
http://<호스트>:<포트>/<인덱스>/_doc/<도큐먼트 id> 
구조로 되어 있습니다.

 

6.x 이전 까지는,  http://<호스트>:<포트>/<인덱스>/<도큐먼트 타입>/<도큐먼트 id> 구조였으나,

Elasticsearch 7.0 부터는 도큐먼트 타입 개념이 사라지고 대신 고정자 _doc 으로 접근해야 합니다!

 

 

 

 

참고 사이트

https://esbook.kimjmin.net/04-data/4.2-crud

 

 

 

 

반응형
저작자표시 변경금지 (새창열림)

'Backend&Devops > ElasticSearch' 카테고리의 다른 글

[ElasticSearch] Logstash No configuration found in the configured sources. [에러해결]  (0) 2022.08.02
[ElasticSearch] logstash + mysql window 환경 연동  (0) 2022.07.19
[Elasticsearch] The bulk request must be terminated by a newline [\\n] 에러  (0) 2022.07.18
[ElasticSearch] received plaintext http traffic on an https channel, closing connection 에러  (2) 2022.07.14
    'Backend&Devops/ElasticSearch' 카테고리의 다른 글
    • [ElasticSearch] Logstash No configuration found in the configured sources. [에러해결]
    • [ElasticSearch] logstash + mysql window 환경 연동
    • [Elasticsearch] The bulk request must be terminated by a newline [\\n] 에러
    • [ElasticSearch] received plaintext http traffic on an https channel, closing connection 에러
    기은P
    기은P
    기은P의 블로그 일상과 개발 관련 포스팅 #React #Typescript #Next #Nest https://github.com/kimdongjang

    티스토리툴바