From 25a2f37d2e2ba5c1b48cd583e0d2c20420f0966b Mon Sep 17 00:00:00 2001
From: Nick Clemens <nick@bywatersolutions.com>
Date: Fri, 17 Nov 2017 12:13:55 +0000
Subject: [PATCH] Bug 19563: Followup - Restore checking sort variable

This code seems a bit odd, $self->sort_fields()->{$name} is checking if
there is any mapping in ES for a field, so if one marc field in an index
is marked as sortable this will exists. We need to check the individual
marc field to see if it should be added to the sort index here.

If you apply the first patch, reindex, and view a record in es:
curl -XGET 'localhost:9200/koha_kohadev_biblios/data/19/?pretty' | grep
-A 10 author__sort

You will see that 245$c is included in the record without that
additional check

Apply this, reindex again, and that field should not be included
---
 Koha/SearchEngine/Elasticsearch.pm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/Koha/SearchEngine/Elasticsearch.pm b/Koha/SearchEngine/Elasticsearch.pm
index 2b2fd10..85a20a9 100644
--- a/Koha/SearchEngine/Elasticsearch.pm
+++ b/Koha/SearchEngine/Elasticsearch.pm
@@ -297,7 +297,6 @@ sub reset_elasticsearch_mappings {
 # sort_fields isn't set, then it'll generate it.
 sub sort_fields {
     my $self = shift;
-
     if (@_) {
         $self->_sort_fields_accessor(@_);
         return;
@@ -348,7 +347,9 @@ sub get_fixer_rules {
                 push @rules, "sum('$name')";
             }
             if ($self->sort_fields()->{$name}) {
-                push @rules, "marc_map('$marc_field','${name}__sort.\$append', $options)";
+                if ($sort || !defined $sort) {
+                    push @rules, "marc_map('$marc_field','${name}__sort.\$append', $options)";
+                }
             }
         }
     );
-- 
2.1.4