Bug 33353: Add compatibility with Elasticsearch 8.x

Elasticsearch 8 removed the support of types. This patch adapts the
requests accordingly.
With this patch, Koha will still be compatible with Elasticsearch 7.x
but will no longer work with Elasticsearch 6.x
Since Elasticsearch 6.x is no longer maintained, this should not be a
problem.

https://www.elastic.co/guide/en/elasticsearch/reference/7.17/removal-of-types.html

Tested with Search::Elasticsearch 6.80 and 7.717

Test plan:
1. Install Elasticsearch 8
   (use docker image: docker.io/koha/elasticsearch-icu:8.x)
2. Change the elasticsearch server location in $KOHA_CONF
3. Run misc/search_tools/rebuild_elasticsearch.pl -r -b -v
   It should fail
4. Apply the patch
5. Run misc/search_tools/rebuild_elasticsearch.pl -r -b -v
   It should end with "Total XXX records indexed"
6. Try to search some biblios and verify that it works the same as
   before

Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Philip Orr <philip.orr@lmscloud.de>
Signed-off-by: Wainui Witika-Park <wainuiwitikapark@catalyst.net.nz>
This commit is contained in:
Julian Maurice 2023-03-28 16:41:08 +02:00 committed by Wainui Witika-Park
parent 11272b8049
commit 0ae4d379fb
No known key found for this signature in database
GPG Key ID: 2D0A6AB5DAF1B78D
1 changed files with 1 additions and 7 deletions

View File

@ -134,7 +134,6 @@ sub update_index {
my $elasticsearch = $self->get_elasticsearch();
$response = $elasticsearch->bulk(
index => $self->index_name,
type => 'data', # is just hard coded in Indexer.pm?
body => \@body
);
if ($response->{errors}) {
@ -270,11 +269,7 @@ sub update_mappings {
try {
my $response = $elasticsearch->indices->put_mapping(
index => $self->index_name,
type => 'data',
include_type_name => JSON::true(),
body => {
data => $mappings
}
body => $mappings,
);
} catch {
$self->set_index_status_recreate_required();
@ -363,7 +358,6 @@ sub delete_index {
my @body = map { { delete => { _id => "$_" } } } @{$biblionums};
my $result = $elasticsearch->bulk(
index => $self->index_name,
type => 'data',
body => \@body,
);
if ($result->{errors}) {