Sorting on keyword not working as expected

I am storing Windows UNC paths in a path field with the following mapping:

"path": {
    "type": "text",
    "fields": {
        "keyword": {
            "type": "keyword"
        },
        "tree": {
            "type": "text",
            "analyzer": "custom_path_tree"
        }
    }
}

When I run this query:

{
    "sort": [
        {
            "fs.path.keyword": {
                "order": "desc"
            }
        }
    ],
    "_source": "path",
    "size": 1
}

I get a document with a path like \\foo\bar\FN1\FFF. However, looking at the other documents in the index, I see others with a path \\foo\bar\FN15\EEE.

I would have thought \ would come before 5 when sorting against a keyword field.

Why is it doing this and how can I get Elasticsearch to sort this field so that \\foo\bar\FN15\EEE comes after \\foo\bar\FN1\FFF?

You're using descending order and \ comes before 5 in that order - e.g. like reading this table backwards

A common technique when sorting numbers as string is to zero pad appropriately e.g. use FN001 instead of FN1. I doubt that's a good answer for examining existing file names but if that's the sort logic you need then that's how you'll have to prep your content