# How to change to desc without sorts in es?

**URL:** <https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801>\
**Category:** Elasticsearch\
**Created:** [March 4, 2022, 2:03am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801 "2022-03-04T02:03:07Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![ifree-zm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ifree-zm/32/102594_2.png) [@ifree-zm](https://discuss.elastic.co/u/ifree-zm)\
**Post date:** [March 4, 2022, 2:03am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/1 "2022-03-04T02:03:07Z")

</div>

### Sort Order[edit](https://github.com/elastic/elasticsearch/edit/8.0/docs/reference/search/search-your-data/sort-search-results.asciidoc)

The `order` option can have the following values:

| `asc` | Sort in ascending order |
| --- | --- |
| `desc` | Sort in descending order |

The order defaults to `desc` when sorting on the `_score` , and defaults to `asc` when sorting on anything else.

---

<div class="post-metadata">

**Author:** ![casterQ](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/casterq/32/93257_2.png) [@casterQ](https://discuss.elastic.co/u/casterQ)\
**Post date:** [March 4, 2022, 2:08am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/2 "2022-03-04T02:08:03Z")

</div>

```auto
POST index1/_search
{
  "sort": [
    {
      "_score": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "match": {
      "text": "elastic"
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![ifree-zm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ifree-zm/32/102594_2.png) [@ifree-zm](https://discuss.elastic.co/u/ifree-zm)\
**Post date:** [March 4, 2022, 2:52am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/5 "2022-03-04T02:52:37Z")

</div>

Thanks for your answer, it seems to work, so do you know how to use it in JAVA RestHighLevelClient JDK?

---

<div class="post-metadata">

**Author:** ![casterQ](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/casterq/32/93257_2.png) [@casterQ](https://discuss.elastic.co/u/casterQ)\
**Post date:** [March 4, 2022, 2:57am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/6 "2022-03-04T02:57:59Z")

</div>

```auto
SearchRequest searchRequest = new SearchRequest("index1");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("text", "elastic"));
searchSourceBuilder.sort("_source", SortOrder.ASC);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

```

---

<div class="post-metadata">

**Author:** ![ifree-zm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ifree-zm/32/102594_2.png) [@ifree-zm](https://discuss.elastic.co/u/ifree-zm)\
**Post date:** [March 4, 2022, 3:14am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/7 "2022-03-04T03:14:36Z")

</div>

> [@casterQ](#):
>
> `searchSourceBuilder.sort("_source", SortOrder.ASC);`

```auto
 for(List<Object> dotNameList : sorts){
            String dotName = (String) dotNameList.get(0);
            FieldSortBuilder fieldSortBuilder = new FieldSortBuilder(dotName);
            fieldSortBuilder.unmappedType("long");
            fieldSortBuilder.order("desc".equalsIgnoreCase(dotNameList.get(1).toString())
                    ? SortOrder.DESC:SortOrder.ASC);
            sourceBuilder.sort(fieldSortBuilder);
        }
        if (sorts.isEmpty()) {
            sourceBuilder.sort("_score",SortOrder.DESC);
        }

```

anything sort data  
3 123  
2 456  
1 789

unmapped field data  
1 789  
2 456  
3 123

I don't know what went wrong,it seems to be related to my use of "unmappedType",when I sort by an unmapped field, the sorting of data is opposite to that without sort.

---

<div class="post-metadata">

**Author:** ![casterQ](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/casterq/32/93257_2.png) [@casterQ](https://discuss.elastic.co/u/casterQ)\
**Post date:** [March 4, 2022, 3:32am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/8 "2022-03-04T03:32:06Z")

</div>

I don't quite clear your sorting scene，this is the basic use of sort：  
`unmapped_type` is for index which don't have sort’s field mapping,  
`missing` can help you specifies how docs which are missing the sort field should be treated.  
and if you have two fields to sort ,you can try as below:

```auto
POST index1/_search
{
  "sort": [
    {
      "_score": {
        "order": "asc"
      }
    },
    {
      "somefield": "desc"
    }
  ],
  "query": {
    "match": {
      "text": "elastic"
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![ifree-zm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ifree-zm/32/102594_2.png) [@ifree-zm](https://discuss.elastic.co/u/ifree-zm)\
**Post date:** [March 4, 2022, 3:38am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/10 "2022-03-04T03:38:46Z")

</div>

我的场景是默认没有sort条件得到data,当我使用一个新的sort字段时,正好mapping中没有这个字段,于是使用了unmappedType指定为了long,我的期望是此时和我没有sort条件时的data排序顺序一致,我看到官方文档里说的没有sort条件时默认使用asc排序,所以我想是不是把它改成默认desc就行,或者说使用了unmapped字段时如何指定此时的排序顺序呢

---

<div class="post-metadata">

**Author:** ![casterQ](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/casterq/32/93257_2.png) [@casterQ](https://discuss.elastic.co/u/casterQ)\
**Post date:** [March 4, 2022, 4:36am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/11 "2022-03-04T04:36:49Z")

</div>

为什么要使用unmapped呢？一般它是用于查询多个索引，某些索引有排序字段filed1，而其他索引没有这个fields1，防止报错而使用的。你是中国人？

---

<div class="post-metadata">

**Author:** ![ifree-zm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ifree-zm/32/102594_2.png) [@ifree-zm](https://discuss.elastic.co/u/ifree-zm)\
**Post date:** [March 4, 2022, 4:40am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/12 "2022-03-04T04:40:45Z")

</div>

是啊 🤣我看到你简书了,我们现在的场景是通过es的动态mapping自动根据传入的数据类型创建字段,但是当值为null时,es是不会在mapping中创建field的,但是这时候前端的表格sort可能会用这个字段排序,这时候会报错字段不存在,所以才找到这么一个解决方案,不知道有没有其他优雅的方式

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 1, 2022, 4:41am UTC](https://discuss.elastic.co/t/how-to-change-to-desc-without-sorts-in-es/298801/13 "2022-04-01T04:41:19Z")

</div>

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