Order by length of array properties

i have an index with objects and an array called "reviews" that inside has properties called positive_comment, negative_comment, reviewer_name and more.

There are some reviews that have the field positive_comment empty (not null, just empty).

I need to order by the length of the field positive_comment first, so reviews with empty positive_comment comes last. The results are the same when ordering in SQL with LEN() property.

This is my query. I also tried: .value.size() in the script, or type "string" but no results.

{
   "_source":[
      "reviews.positive_comment"
   ],
   "query":{
      "bool":{
         "filter":[
            {
               "term":{
                  "id":214
               }
            }
         ]
      }
   },
   "sort":{
      "_script":{
         "script":"doc['reviews.positive_comment'].value.length()",
         "type":"number",
         "order":"asc"
      }
   }
}

This is my result:

{
   "_source":{
      "reviews":[
         {
            "positive_comment":"Great"
         },
         {
            "positive_comment":"Really good product"
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":""
         },
         {
            "positive_comment":"Awesome"
         }
      ]
   },
   "sort":[
      "0"
   ]
}

Additional info:

First object of array:

"reviews": [ { "item_id": 214, "year": 1990, "date_created": "2021-07-21T15:05:41.103", "negative_comment": "Nothing", "valuation": 3, "reviewer_name": "", "positive_comment": "Awesome", "reviewer_id": 7465, "comment": "This is a comment.", "id": 1817 }]

Mapping of this particular property of the array:

"reviews": { "properties": { "positive_comment": { "type": "keyword" }}}

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.