store 매핑 파라미터
store 매핑 파라미터
store 매핑 파라미터는 필드의 값이 _source와 별도로 저장되어, 검색 요청의 stored_fields 옵션을 사용해 직접 검색할 수 있게 할지 여부를 결정해요.
기본적으로 store는 false로 설정되어 있어서 필드 값이 개별적으로 저장되지 않고 문서 _source의 일부로만 사용 가능해요. store를 true로 설정하면 _source를 비활성화해 디스크 공간을 절약하면서도 특정 필드는 여전히 검색할 수 있어요.
출처: 문서
본문
예제: 필드에서 store 활성화하기
다음 요청은 model 필드가 _source와 별도로 저장되는 products 인덱스를 생성해요:
PUT /products
{
"mappings": {
"properties": {
"model": {
"type": "keyword",
"store": true
},
"name": {
"type": "text"
}
}
}
}
인덱스에 문서를 입력(ingest)해요:
PUT /products/_doc/1
{
"model": "WM-1001",
"name": "Wireless Mouse"
}
저장된 필드만 검색해요:
POST /products/_search
{
"query": {
"match": {
"name": "Mouse"
}
},
"stored_fields": ["model"]
}
이 쿼리는 _source가 여전히 사용 가능함에도 불구하고, 별도로 저장된 model 필드를 반환해요.
예제: _source가 비활성화된 상태로 필드 저장하기
디스크 공간을 절약하고 나중에 전체 원본 문서에 접근할 필요가 없다면(예: reindexing이나 업데이트), _source를 비활성화하고 필요한 필드만 저장할 수 있어요:
PUT /products_no_source
{
"mappings": {
"_source": {
"enabled": false
},
"properties": {
"model": {
"type": "keyword",
"store": true
},
"name": {
"type": "text"
}
}
}
}
인덱스에 문서를 입력해요:
PUT /products_no_source/_doc/1
{
"model": "KB-2002",
"name": "Mechanical Keyboard"
}
저장된 필드를 검색해요:
POST /products_no_source/_search
{
"query": {
"match": {
"name": "Keyboard"
}
},
"stored_fields": ["model"]
}
이 쿼리는 _source에 접근하지 않고 저장된 stored_fields에서 model 필드를 가져와 반환해요.
다음과 같이 _source를 검색하려고 시도하면:
GET /products_no_source/_doc/1
응답의 _source는 null이 돼요. 이는 _source가 비활성화되어 전체 문서를 더 이상 사용할 수 없고 저장된 필드만 검색할 수 있다는 것을 보여줘요:
{
"_index": "products_no_source",
"_id": "1",
"found": true,
"_source": null
}