{
"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개의 속성에 대해서 한쌍으로 저장 되게 하기 위해서 !!
"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"
}
}
}
}
}
}
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.date": {
"gte": 1886416897,
"lte": 1886416900
}
}
}
}
}
}