Bug 33353: Add compatibility with Search::Elasticsearch 8.0

For some reasons, with Search::Elasticsearch 8.0 JSON::true is
interpreted as 1 and Elasticsearch will always respond that it found "at
least 1 record". Something like this:

{
    total => {
        value => 1,
        relation => 'gte'
    }
}

Replacing JSON::true by \1 works with every version of
Search::Elasticsearch I tested (6.80, 7.717, 8.0)

Also worth noting:
Search::Elasticsearch will stop being supported by Elastic
https://github.com/elastic/elasticsearch-perl/issues/220

We might need to find an alternative for future versions of
Elasticsearch

Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Philip Orr <philip.orr@lmscloud.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Julian Maurice 2023-03-28 17:02:19 +02:00 committed by Tomas Cohen Arazi
parent 24aab6b9c5
commit 8194419144
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F

View file

@ -94,7 +94,7 @@ sub search {
my $results = eval {
$elasticsearch->search(
index => $self->index_name,
track_total_hits => JSON::true,
track_total_hits => \1,
body => $query
);
};
@ -124,7 +124,7 @@ sub count {
# and just return number of hits
my $result = $elasticsearch->search(
index => $self->index_name,
track_total_hits => JSON::true,
track_total_hits => \1,
body => $query
);