elasticsearch-dsl-py
elasticsearch-dsl-py copied to clipboard
Sorting on nested object fields is not handled preperly
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.
Hi! Yes, I agree, we should be able to create the correct sort format.