Bug 25342: Force ES id as string
authorNick Clemens <nick@bywatersolutions.com>
Fri, 1 May 2020 14:48:55 +0000 (14:48 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 12 May 2020 09:59:00 +0000 (10:59 +0100)
To test:
1 - Be using ES
2 - Find a unique record by searchign for title or seomthing
3 - Edit the record
4 - Repeat search and confirm you are returned to the details page
5 - Go to Tools->MARC modification templates
6 - Add a template and define an action
7 - Go to Tools->Batch record modification
8 - Select Enter a list of record numbers
9 - Enter the biblionumber of the record you searched for
10 - Use the marc modification template you setup
11 - Complete the modification
12 - Repeat your search
13 - note you get two results, both pointing to same biblionumber
14 - Check the ES index, note that you have two entries, one with the biblionumber, and the other with #.0, e.g.:
    curl -XGET 'es:9200/koha_kohadev_biblios/data/14.0?pretty'
    curl -XGET 'es:9200/koha_kohadev_biblios/data/14?pretty'
15 - Apply patch
16 - Delete and rebuild ES index
    perl misc/search_tools/rebuild_elasticsearch.pl -d -b
17 - Repeat 2-12
18 - No duplication this time

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Koha/SearchEngine/Elasticsearch/Indexer.pm

index bf00dda..4c57445 100644 (file)
@@ -101,7 +101,6 @@ Arrayref of C<MARC::Record>s.
 
 sub update_index {
     my ($self, $biblionums, $records) = @_;
-
     my $conf = $self->get_elasticsearch_params();
     my $elasticsearch = $self->get_elasticsearch();
     my $documents = $self->marc_records_to_documents($records);
@@ -112,7 +111,7 @@ sub update_index {
         my $document = $documents->[$i];
         push @body, {
             index => {
-                _id => $id
+                _id => "$id"
             }
         };
         push @body, $document;