|
Lines 49-55
use Koha::SearchEngine::QueryBuilder;
Link Here
|
| 49 |
use Koha::SearchEngine::Search; |
49 |
use Koha::SearchEngine::Search; |
| 50 |
use Koha::Exceptions::Elasticsearch; |
50 |
use Koha::Exceptions::Elasticsearch; |
| 51 |
use MARC::Record; |
51 |
use MARC::Record; |
| 52 |
use Catmandu::Store::ElasticSearch; |
|
|
| 53 |
use MARC::File::XML; |
52 |
use MARC::File::XML; |
| 54 |
use Data::Dumper; #TODO remove |
53 |
use Data::Dumper; #TODO remove |
| 55 |
use Carp qw(cluck); |
54 |
use Carp qw(cluck); |
|
Lines 117-131
faster than pulling all the data in, usually.
Link Here
|
| 117 |
|
116 |
|
| 118 |
sub count { |
117 |
sub count { |
| 119 |
my ( $self, $query ) = @_; |
118 |
my ( $self, $query ) = @_; |
|
|
119 |
my $elasticsearch = $self->get_elasticsearch(); |
| 120 |
my $conf = $self->get_elasticsearch_params(); |
| 120 |
|
121 |
|
| 121 |
my $params = $self->get_elasticsearch_params(); |
122 |
# TODO: Probably possible to exclude results |
| 122 |
$self->store( |
123 |
# and just return number of hits |
| 123 |
Catmandu::Store::ElasticSearch->new( %$params, trace_calls => 0, ) ) |
124 |
my $result = $elasticsearch->search( |
| 124 |
unless $self->store; |
125 |
index => $conf->{index_name}, |
|
|
126 |
body => $query |
| 127 |
); |
| 125 |
|
128 |
|
| 126 |
my $search = $self->store->bag->search( %$query); |
129 |
return $result->{hits}->{total}; |
| 127 |
my $count = $search->total() || 0; |
|
|
| 128 |
return $count; |
| 129 |
} |
130 |
} |
| 130 |
|
131 |
|
| 131 |
=head2 search_compat |
132 |
=head2 search_compat |
|
Lines 405-422
the default value for this setting in case it is not set)
Link Here
|
| 405 |
sub max_result_window { |
406 |
sub max_result_window { |
| 406 |
my ($self) = @_; |
407 |
my ($self) = @_; |
| 407 |
|
408 |
|
| 408 |
$self->store( |
409 |
my $elasticsearch = $self->get_elasticsearch(); |
| 409 |
Catmandu::Store::ElasticSearch->new(%{ $self->get_elasticsearch_params }) |
410 |
my $conf = $self->get_elasticsearch_params(); |
| 410 |
) unless $self->store; |
|
|
| 411 |
|
411 |
|
| 412 |
my $index_name = $self->store->index_name; |
412 |
my $response = $elasticsearch->indices->get_settings( |
| 413 |
my $settings = $self->store->es->indices->get_settings( |
413 |
index => $conf->{index_name}, |
| 414 |
index => $index_name, |
414 |
flat_settings => 'true', |
| 415 |
params => { include_defaults => 'true', flat_settings => 'true' }, |
415 |
include_defaults => 'true' |
| 416 |
); |
416 |
); |
| 417 |
|
417 |
|
| 418 |
my $max_result_window = $settings->{$index_name}->{settings}->{'index.max_result_window'}; |
418 |
my $max_result_window = $response->{$conf->{index_name}}->{settings}->{'index.max_result_window'}; |
| 419 |
$max_result_window //= $settings->{$index_name}->{defaults}->{'index.max_result_window'}; |
419 |
$max_result_window //= $response->{$conf->{index_name}}->{defaults}->{'index.max_result_window'}; |
| 420 |
|
420 |
|
| 421 |
return $max_result_window; |
421 |
return $max_result_window; |
| 422 |
} |
422 |
} |