리타의 저장소

ES | Elasticsearch에 인덱스를 만들고, 매핑해보자. 본문

Dev/Database

ES | Elasticsearch에 인덱스를 만들고, 매핑해보자.

ريتا 2025. 12. 14. 21:36

인덱스 만들기 

#이런식으로 만든다.
PUT /users 

# 확인 
GET /users

# DELETE
DELETE /boards

 

 

만약 DELETE 문으로 인덱스를 삭제하게 된다면, not found exception이 뜬다. 

"index_not_found_exception",

 

인덱스에 매핑 정의하기 

쉽게 얘기하면 users 라는 인덱스(테이블)에, name, age, is_active라는 컬럼을 정의해준거라고 생각하면 된다.

PUT /users/_mappings
{
    "properties" : {
        "name" : {"type": "keyword"},
        "age" : {"type": "integer"},
        "is_active": {"type": "boolean"}
    }
}

 

확인해보면, 삽입이 잘 되어있는 것을 알 수 있다. 

Kibana

 

인덱스에 데이터 추가 (doc 추가)

POST /users/_doc
{
    "name": "Alice",
    "age": 28,
    "is_active": true
}

POST /users/_doc
{
    "name": "bob",
    "age": 30,
    "is_active": false
}

GET /users/_search

 

GET으로 데이터를 잡아보면 아래와 같이 잘 들어가 있는 것을 알 수 있다. 

{
  "took": 26,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [ // hits => 검색 결과들
      {
        "_index": "users", // index => index 이릅
        "_id": "B1jcvJkBNSKZAhzcAx1z", // elasticsearch가 부여한 고유값
        "_score": 1,
        "_source": { // source => 원본이 들어있는 필드
          "name": "Alice",
          "age": 28,
          "is_active": true
        }
      },
      {
        "_index": "users",
        "_id": "CFjcvJkBNSKZAhzcQx23",
        "_score": 1,
        "_source": {
          "name": "bob",
          "age": 30,
          "is_active": false
        }
      }
    ]
  }
}

 

도큐먼트 저장/조회/수정/삭제

// id 지정해서 삽입하기
POST /users/_create/1
{
    "name":"jacode",
    "age" : 30,
    "is_active": true
}


// upsert 하기 
// (해당 id값 (2)번 데이터가 없으면 삽입, 있으면 업데이트)
PUT /users/_doc/2
{
    "name" :"jason2",
    "age": 30,
    "is_active":true
}

 

doc 수정하기 (통째로)

id 1dml doc name 변경.

 

GET으로 잡아보면, 수정된것을 확인할 수 있다. 

 

 

doc 수정하기 (일부 필드만)

id 2인 곳의 데이터를 일부 필드만 수정해보자.

우선 현재 id=2 인 곳의 데이터는 아래와 같다.

 

일부 필드만 수정하려면 POST + _update 조합을 써야한다.

POST /users/_update/2
{
    "doc": {
        "age":10,
        "is_active": false
    }
}

 

확인해보면, 잘 수정이 되어있을 것이다. 

 

doc 삭제하기

DELETE /users/_doc/2

삭제가 잘 됐다.

 

 

지금까지는 Tool (Kibana) 상에서 데이터를 조회하고 수정하고 삭제하는 방법을 확인해보았다. 대체로 사실 문법적인 부분만 조금 익히면, 흔하게 사용하는 Database에서 처럼 빠르게 데이터를 파악할 수 있을 것 같아보인다. 

다 들었던 강의내용 정리해뒀던 것들을 뒤늦게 블로그에 옮기고 있는데, 그때그때 할걸. 왜 노션에 정리를 했을까. 그냥 블로그에 바로바로 올리면 좋았을 것을..