Array 형식으로 필드에 데이터 저장하기

하나의 필드에 같은 형식의 데이터를 여러 개 넣어야 되는 경우가 많이 발생합니다. 그럴 때 대표적으로 2가지 방식이 있습니다.

1번째 방식으로는 필드와 함께 값을 같이 저장하는 방식입니다.

2번째 방식은 값만 저장하는 방식입니다.

이번에는 이 2가지 방식 모두에 대하여 알아보겠습니다.

1. 필드에 Object형식으로 데이터 리스트 저장하기

하나의 필드와 같이 값을 저장하는 방식으로는 nested를 사용하는 것 입니다.

 

nested 맵핑 만들기

api PUT http://localhost:9200/object-list-index/
header Content-type: application/json
body {
    "mappings": {
        "properties": {
            "server": {
                "type": "keyword"
            },
            "users": {
                "type": "nested"
            }
        }
    }
}

 

데이터 넣기

api PUT http://localhost:9200/object-list-index/_doc/1
header Content-type: application/json
body {
    "server": "server1",
    "users": [{"id": "user1"}, {"id": "user2"}, {"id": "user3"}, {"id": "user4"}]
}

 

데이터 출력하기

api GET http://localhost:9200/object-list-index/_doc/1

 

2. 필드에 데이터만 리스트로 넣기

이번에는 위에 방식과 다른 그냥 값만 배열 형식으로 넣는 방식입니다.

 

맵핑만들기

api PUT http://localhost:9200/value-list-index/
header Content-type: application/json
body {
    "mappings": {
        "properties": {
            "server": {
                "type": "keyword"
            },
            "users": {
                "type": "keyword",
                "fields": {
                    "keyword": {
                        "type": "keyword"
                    }
                }
            }
        }
    }
}

 

데이터 넣기

api PUT http://localhost:9200/value-list-index/_doc/1
header Content-type: application/json
body {
    "server": "server1",
    "users": ["user1","user2", "user3","user4"]
}

 

데이터 출력하기

api GET http://localhost:9200/value-list-index/_doc/1

 

+ Recent posts