Nested sort inside a top hits inside a reverse nested doesn't work #13420

 

 

https://github.com/elastic/elasticsearch/issues/13420

 

Hello,
I'm facing something that looks like a bug. I have a simple document model : my documents are items, and inside these items there are categories.
I want to get a list of categories with a certain type, and for each of these categories, a list of top items belonging to this category, sorted on the category rank. So I'm doing a top hits inside reverse nested

Mapping example :

POST /bugth
{
    "mappings": 
    {        
        "item" : {
            "properties" : {
                "id" : { "type" : "integer" },
                "categories" : { 
                    "type" : "nested",
                    "properties" : {
                        "id" : { "type" : "integer" },
                        "type" : { "type" : "integer" },
                        "rank" : { "type" : "integer" }
                    }
                }
            }
        }        
    }
}

Some data to test :

PUT /bugth/item/3
{
    "id": 3,
    "categories": [{
        "id": 1,
        "type": 1,
        "rank": 15
    }, {
        "id": 2,
        "type": 1,
        "rank": 1
    }]
}

PUT /bugth/item/2
{
    "id": 2,
    "categories": [{
        "id": 1,
        "type": 1,
        "rank": 10
    }, {
        "id": 2,
        "type": 1,
        "rank": 5
    },
    {
        "id": 3,
        "type": 2,
        "rank": 20
    }]
}

PUT /bugth/item/1
{
    "id": 1,
    "categories": {
        "id": 1,
        "type": 1,
        "rank": 0
    }
}

Finally the search query :

POST /bugth/item/_search
{
    "size": 0,
    "query": {
    "filtered": {
      "filter": {
        "match_all": {}
      }
    }
  },
  "aggs": {
      "categories": {                        
          "nested": {
              "path": "categories"
          },
          "aggs": {
              "filteredcategories": {
                  "filter": {
                      "bool": {
                          "must": {
                              "term": { "categories.type": 1}
                          }                          
                      }
                  },
                  "aggs": {
                      "top_categories": {
                          "terms": {
                              "field": "categories.id"
                          },
                          "aggs": {
                              "top_items": {
                                  "reverse_nested": {                                
                                  },
                                  "aggs": {                          
                                      "top_items_per_categories": {                              
                                          "top_hits": {                   
                                              "sort": [
                                                {
                                                  "categories.rank": {
                                                    "order": "asc",
                                                    "mode": "max"
                                                  }
                                                }                                                
                                              ]
                                              }
                                          }
                                      }
                                  }
                              }
                          }
                      }
                  }
                }
          }
      }    
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值