Skip to content

Sorting on nested object fields is not handled preperly #1891

Open
@jhdxr

Description

@jhdxr

Say for a sort like this

s = Search(using=client, index=source)
s = s.sort("metadata.date")

Won't work because ES will complain "it is mandatory to set the [nested] context on the nested sort field: [metadata.date].

To fix it, you should use raw query, which means something like this

s = s.sort({
       "metadata.date": {
            "order": "asc", 
            "nested": {
                "path": "metadata"
            }
     }
})

While I think it makes sense for ES and the elasticsearch-py library ask user to do so, elasticsearch-dsl is not the case. This library is aimed to avoid writing raw query, and it should be able to infer that if the fields is nested or not, and generated the path accordingly if necessary.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions