nested

net1506·2022년 2월 6일
0

nested

{
  "mappings": {
    "properties": {
      "characters": {
        "properties": {
          "name": {
            "type": "text"
          },
          "age": {
            "type": "byte"
          },
          "side": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

일 때
character 필드를 저장 할 때에는
character.name
character.age
character.side
에 역인덱스 과정으로 저장을 한다.
그래서 제대로 검색이 되지 않는데....

character 타입에 대해서 nested 타입으로 속성을 지정해주어야 함
character 타입은 nested 라는 곳에 별도로 저장이 되게 된다.

링크 참조
https://esbook.kimjmin.net/07-settings-and-mappings/7.2-mappings/7.2.5-object-nested

character.name 과 character.side 와 상관이 없이 저장이 되는데
2개의 속성에 대해서 한쌍으로 저장 되게 하기 위해서 !!

nested mappings 샘플

"PUT article"{
   "mappings":{
      "properties":{
         "author":{
            "type":"text",
            "fields":{
               "keyword":{
                  "type":"keyword",
                  "ignore_above":256
               }
            }
         },
         "content":{
            "type":"text",
            "fields":{
               "keyword":{
                  "type":"keyword",
                  "ignore_above":256
               }
            }
         },
         "id":{
            "type":"long"
         },
         "pubdate":{
            "type":"date"
         },
         "source":{
            "type":"text",
            "fields":{
               "keyword":{
                  "type":"keyword",
                  "ignore_above":256
               }
            }
         },
         "title":{
            "type":"text",
            "fields":{
               "keyword":{
                  "type":"keyword",
                  "ignore_above":256
               }
            }
         },
         "url":{
            "type":"text",
            "fields":{
               "keyword":{
                  "type":"keyword",
                  "ignore_above":256
               }
            }
         },
         "characters":{
            "type":"nested",
            "properties":{
               "name":{
                  "type":"text"
               },
               "side":{
                  "type":"keyword"
               }
            }
         }
      }
   }
}

nested 로 들어갔는데 또 내부 field가 nested 속성이 있을 때

user field도 nested 속성이고
prizes field도 nested 속성일 때!!!

data 샘플
  user : [
    {
      prizes: {
        name: "excel 1st"
        score: 11
        date: "2017-03-11"
        ...
      }
    },
    {
      prizes: {
        name: "word processor"
        score: 3
        date: "2014-01-21"
        ...
      }
    },
    {
      prizes: {
        name: "linux master"
        score: 20
        date: "2019-01-18"
        ...
      }
    }
  ]
  
작성된 쿼리
GET lee-user/_search
{
  "query": {
    "nested": {
      "path": "user.prizes",
      "query" : {
         "range": {
           "user.prizes.score": {
             "gte": 1886416897,
             "lte": 1886416900
           }
         }
      }
    }
  }
}

0개의 댓글