ElasticStack/Elasticsearch

[es] nested object sort

닉의네임 2023. 1. 17. 21:43
반응형

인덱스 생성

PUT nested-object-test
{
  "mappings": {
    "properties": {
      "metaDates": {
          "type": "nested",
          "properties": {
            "value": {
              "type": "float"
            }
          }
      }
    }
  }
}

 

데이터 색인

PUT /nested-object-test/_doc/1
{
  "somefield": "this is a field",
  "someotherfield": "this is some other field",
  "metaDates": [
    {
      "name": "create-time",
      "value": 1
    },
    {
      "name": "update-time",
      "value": 1
    },
    {
      "name": "some-other-time",
      "value": 1
    }
  ]
}


PUT /nested-object-test/_doc/2
{
  "somefield": "this is a field",
  "someotherfield": "this is some other field",
  "metaDates": [
    {
      "name": "create-time",
      "value": 2
    },
    {
      "name": "update-time",
      "value": 2
    },
    {
      "name": "some-other-time",
      "value": 2
    }
  ]
}

PUT /nested-object-test/_doc/3
{
  "somefield": "this is a field",
  "someotherfield": "this is some other field",
  "metaDates": [
    {
      "name": "create-time",
      "value": 3
    },
    {
      "name": "update-time",
      "value": 3
    },
    {
      "name": "some-other-time",
      "value": 3
    }
  ]
}

데이터 조회

 

GET nested-object-test/_search
{
  "_source": ["metaDates"], 
  "sort": [
    {
      "metaDates.value": {
        "order": "desc",
        "nested": {
          "path": "metaDates",
          "filter": {
            "match":{
              "metaDates.name": "update-time"
            }
          }
        }
      }
    }
  ]
}

반응형