Bug 28610: Elasticsearch 7 - hits.total is now an object
In Elasticsearch 7 hits.total is now an object which is not always an exact
value. You can always get an exact total by adding a track_total_hits
parameter set to true when using the Elasticsearch search method
To test:
1) Run prove t/db_dependent/Koha/SearchEngine/Elasticsearch/Search.t
2) If you observe an error about types, apply patch for bug 25669
3) Run prove t/db_dependent/Koha/SearchEngine/Elasticsearch/Search.t
4) Observe that tests with count fail
5) Apply patch
6) Observe that tests with count pass
7) Sign off
Sponsored-by: Lund University Library
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
(cherry picked from commit 301ed1567b)
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
This commit is contained in:
parent
1708317b7b
commit
4086c1c4ff
|
|
@ -50,9 +50,9 @@ use Koha::SearchEngine::Search;
|
|||
use Koha::Exceptions::Elasticsearch;
|
||||
use MARC::Record;
|
||||
use MARC::File::XML;
|
||||
use Data::Dumper; #TODO remove
|
||||
use Carp qw(cluck);
|
||||
use MIME::Base64;
|
||||
use JSON;
|
||||
|
||||
Koha::SearchEngine::Elasticsearch::Search->mk_accessors(qw( store ));
|
||||
|
||||
|
|
@ -95,12 +95,16 @@ sub search {
|
|||
my $results = eval {
|
||||
$elasticsearch->search(
|
||||
index => $self->index_name,
|
||||
track_total_hits => JSON::true,
|
||||
body => $query
|
||||
);
|
||||
};
|
||||
if ($@) {
|
||||
die $self->process_error($@);
|
||||
}
|
||||
if (ref $results->{hits}->{total} eq 'HASH') {
|
||||
$results->{hits}->{total} = $results->{hits}->{total}->{value};
|
||||
}
|
||||
return $results;
|
||||
}
|
||||
|
||||
|
|
@ -121,9 +125,13 @@ sub count {
|
|||
# and just return number of hits
|
||||
my $result = $elasticsearch->search(
|
||||
index => $self->index_name,
|
||||
track_total_hits => JSON::true,
|
||||
body => $query
|
||||
);
|
||||
|
||||
if (ref $result->{hits}->{total} eq 'HASH') {
|
||||
return $result->{hits}->{total}->{value};
|
||||
}
|
||||
return $result->{hits}->{total};
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue