elasticsearch-net
elasticsearch-net copied to clipboard
MaxScore not filled on SearchResponse at the root level but only in the HitsMetadata
Elastic.Clients.Elasticsearch version: 8.9.1
Elasticsearch version: 8.9.0
.NET runtime version: 7.0.10
Operating system version: Windows 11
Description of the problem including expected versus actual behavior: Do a search with .TrackScore() enabled and then look at the value of the MaxScore property of the SearchResponse, it's always at null even if there is a value in the JSON.
Steps to reproduce:
- Do a search with .TrackScore() enabled
- Check the JSON answered, the max_score property is there
- Check the SearchResponse class, no MaxScore property is set at the root level even if the property is available only at the HitsMetadata level.
Expected behavior MaxScore is set correctly at both level or root level is deleted.
Json sent:
{
"track_scores": true
}
Json received:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 5,
"relation": "eq"
},
"max_score": 1.0,
....
}
.NET code
The client just deserializes what the server sends and in this case, the server does not send the max_score
field on top level at all. I have to check if the top level max_score
field should even exists. It is defined in the current specification, but that might as well be a bug. Will come back to you after clarifying.
I think the good fix is just to remove that property at the root, it's a little bit like the settings issue that I found with the slow settings: https://github.com/elastic/elasticsearch-net/issues/7865