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
'Elasticsearch > 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 |