graphql-compose/graphql-compose-elasticsearch

searchPagination won't work in ES > 7.0

Opened this issue · 1 comments

There is breaking change in total hits so now graphql generates error:

Int cannot represent non-integer value: { value: 1364, relation: \"eq\" }"

I think this should be checked if it is object:

const itemCount = res.count || 0;

Here is link to this breaking change:

https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes-7.0.html#hits-total-now-object-search-response

I think itemCount could be changed to something like this:

const itemCount = res.count.hasOwnProperty('value') && res.count.hasOwnProperty('relation') && res.count.relation == 'eq' ? res.count.value : res.count || 0;

Unfortunately this won't work if hits_total will be greater than 1000.
So maybe it would be better to set track_total_hits to true

pcasa commented

@nodkz added a PR, I had a similar need.