본문 바로가기
Elasticsearch/간단한 실습

02. REST API를 사용하기

by clearinging 2021. 5. 20.
반응형

접속

접속 권한 제한

curl -XGET localhost:9200?pretty
  • 위와 command를 실행 할 경우 아래와 같은 json코드를 볼 수 있다. 이럴 경우 elasticsearch.ymlxpack.security.enabled: true 를 주석 처리해줘야 한다.
{
  "error" : {
    "root_cause" : [
      {
        "type" : "security_exception",
        "reason" : "missing authentication credentials for REST request [/?pretty]",
        "header" : {
          "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
        }
      }
    ],
    "type" : "security_exception",
    "reason" : "missing authentication credentials for REST request [/?pretty]",
    "header" : {
      "WWW-Authenticate" : "Basic realm=\"security\" charset=\"UTF-8\""
    }
  },
  "status" : 401
}

REST API

GET

목적 : 데이터 조회

  • index 조회
  • curl -XGET localhost:9200/classes

PUT

목적 : Index 생성

curl -XPUT localhost:9200/classes

DELETE

목적 : 데이터 삭제

curl -XDELETE localhost:9200/classes?pretty

POST

목적 : 데이터 추가

curl -H "Content-Type: application/json" -XPOST localhost:9200/classes/class/1 -d "{\"title\" : \"Algorithm\", \"professor\" : \"John\" }"
  • json 형태로 데이터 저장
  • 결과
{
  "classes" : {
    "aliases" : { },
    "mappings" : {
      "properties" : {
        "professor" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        },
        "title" : {
          "type" : "text",
          "fields" : {
            "keyword" : {
              "type" : "keyword",
              "ignore_above" : 256
            }
          }
        }
      }
    },
    "settings" : {
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1",
        "provided_name" : "classes",
        "creation_date" : "1621518421366",
        "number_of_replicas" : "1",
        "uuid" : "hChFiUJxTNClEQxMKzsAWA",
        "version" : {
          "created" : "7110299"
        }
      }
    }
  }
}

UPDATE

목적 : 데이터 갱신

  • 바로 update하는 방식
    curl -H "Content-Type: application/json" -XPOST http://localhost:9200/classes/class/1/_update?pretty -d "{ \"doc\" : { \"unit\" : 1} }"
{
  "_index" : "classes",
  "_type" : "class",
  "_id" : "1",
  "_version" : 3,
  "_seq_no" : 2,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "title" : "Algorithm",
    "professor" : "John",
    "unit" : 1
  }
}
  • code처럼 변수 값을 수정 하는 방식
    curl -H "Content-Type: application/json" -XPOST http://localhost:9200/classes/class/1/_update?pretty -d "{ \"script\" : \"ctx._source.unit += 5 \"}"
{
  "_index" : "classes",
  "_type" : "class",
  "_id" : "1",
  "_version" : 4,
  "_seq_no" : 3,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "title" : "Algorithm",
    "professor" : "John",
    "unit" : 6
  }
}

bulk update

  • 많은 정보를 한번에 update 쿼리를 날리기 위한 것
  • 주로 편의상 json파일 정보를 넣을 때 많이 사용함
curl -H "Content-Type: application/json" -XPOST http://localhost:9200/_bulk?pretty --data-binary @classes.json
  • classes.json file 내부의 모든 정보를 추가 할 때 사용 -> 2개 이상 정보가 있을 때 사용

Search Opition

  • 한번에 여러 document를 한번에 조회할 때 사용
 curl -H "Content-Type: application/json" -XGET http://localhost:9200/_search?pretty
  • 추가 검색 기능
  • unit이 3인 값을 출력
curl -H "Content-Type: application/json" -XGET http://localhost:9200/_search?q=unit:3&pretty
  • request body를 사용할 경우
  • unit 이 3인 값을 반환 하는 것
  • 여러 Opition이 존재
curl -H "Content-Type: application/json" -XGET http://localhost:9200/_search -d '
{
    "query" : {
        "term": { "unit": 3 }
    }
}
반응형

'Elasticsearch > 간단한 실습' 카테고리의 다른 글

03. Aggregation  (0) 2021.05.23
01. Elasticsearch 기본 개념 정리  (0) 2021.05.20