From 53369f96697373d9e2e43ca68bdc3e3cac147171 Mon Sep 17 00:00:00 2001 From: Kevin Carnes Date: Tue, 8 Feb 2022 14:35:18 +0100 Subject: [PATCH] Bug 27770: ES: Deprecated aggregation order key [_term] used, replaced by [_key] Starting in Elasticsearch 6.0 _key should be used instead of _term to order buckets by their term 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 if you get a deprecation warning about order key 5) Apply patch 6) Run prove t/db_dependent/Koha/SearchEngine/Elasticsearch/Search.t 7) Observe no deprecation warning about order key 8) Sign off Sponsored-by: Lund University Library --- Koha/SearchEngine/Elasticsearch/QueryBuilder.pm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm index 607634c405..d81cad1c46 100644 --- a/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm +++ b/Koha/SearchEngine/Elasticsearch/QueryBuilder.pm @@ -44,6 +44,7 @@ use JSON; use List::MoreUtils qw( each_array ); use Modern::Perl; use URI::Escape qw( uri_escape_utf8 ); +use version; use C4::Context; use Koha::Exceptions; @@ -639,11 +640,16 @@ sub _build_scan_query { query => '*' } }; + my $es_key = '_key'; + my $elasticsearch = $self->get_elasticsearch(); + if (version->parse($elasticsearch->info->{version}->{number}) < version->parse('6.0.0')) { + $es_key = '_term'; + } $res->{aggregations} = { $index => { terms => { field => $index . '__facet', - order => { '_term' => 'asc' }, + order => { $es_key => 'asc' }, include => $self->_create_regex_filter($self->clean_search_term($term)) . '.*' } } -- 2.17.1