Elasticsearch

Elasticsearch Object 형식으로 저장하기

stdhsw 2021. 8. 31. 20:49

Object처럼 데이터 저장하기

Elasticsearch을 사용하다 보면 데이터를 일반적인 필드 형식으로 저장하는 것이 아닌 트리 구조로 데이터를 저장하고 싶은 상황이 있습니다. 즉 object형식으로 데이터를 저장해야 되는데 이럴 때 사용하는 것이 properties입니다. 이제부터 properties 사용법에 대하여 알아보겠습니다. (참고로 해당 방식처럼 Object형식으로 데이터를 저장하게 되면 인덱스의 구조가 복잡해져 검색하는 상황에 따라 검색의 성능이 저하될 수 있습니다. 참고하시고 본인의 데이터 검색 방식에 대하여 확인하시고 적용하는 것을 추천드립니다.)

properties 사용하기

데이터의 구조는 다음과 같습니다.

  • 학과
  • 학생
    • 이름
    • 나이
    • 이메일
api PUT http://localhost:9200/student-index
header Content-type: application/json
body {
    "mappings": {
        "properties": {
            "subject": {
                "type": "keyword"
            },
            "student": {
                "properties": {
                    "name": {
                        "type": "text"
                    },
                    "age": {
                        "type": "short"
                    },
                    "email": {
                        "type": "text"
                    }
                }
            }
        }
    }
}

 

출력 결과

추가적으로 데이터를 넣고 student-index를 출력하였습니다.

Object 형식의 필드를 추천하는 상황과 추천하지 않는 상황

상황에 따라 object형식으로 데이터를 저장할 때가 좋은 경우가 있는 반면 그렇지 않은 경우도 있습니다.

 

추천하는 상황

  • object의 필드 별로 데이터를 집계 및 통계를 내야 되는 경우

추천하지 않는 상황

  • 그냥 데이터를 저장하고 읽기만 하는 경우 오히려 데이터 검색 성능에 저하가 될 수 있습니다. 만약 그냥 데이터를 검색하는 데 사용하지 않고 텍스트 형식으로 출력하는데만 사용하신다면 그냥 필드를 text로 하여 json데이터를 text로 저장하는 것을 추천합니다.

참조

https://www.elastic.co/guide/en/elasticsearch/reference/current/object.html

 

Object field type | Elasticsearch Guide [7.14] | Elastic

If you need to index arrays of objects instead of single objects, read Nested first.

www.elastic.co

 

'Elasticsearch' 카테고리의 다른 글

Elasticsearch text, keyword의 차이  (0) 2021.09.03
Elasticsearch Array 형식으로 저장하기  (0) 2021.09.01
Elasticsearch bulk 배치 처리  (0) 2021.08.30
Elasticsearch 데이터 CRUD  (0) 2021.08.29
Elasticsearch의 reindex  (0) 2021.08.28