kitodo-production
kitodo-production copied to clipboard
Mapper parsing exception: normalizer 'lowercase' not found
Describe the bug Some ElasticSearch implementations refuse to create the index with the error message:
ResponseException: method [PUT], host [http://localhost:9201], URI [/kitodo_process], status line [HTTP/1.1 400 Bad Request] {"error":{"root_cause":[{"type":"mapper_parsing_exception","reason":"normalizer [lowercase] not found for field [keyword]"}],"type":"mapper_parsing_exception","reason":"Failed to parse mapping [_doc]: normalizer [lowercase] not found for field [keyword]","caused_by":{"type":"mapper_parsing_exception","reason":"normalizer [lowercase] not found for field [keyword]"}},"status":400}
To Reproduce Steps to reproduce the behavior:
- The error requires a specific ElasticSearch version. I couldn't determine exactly which one it concerns.
- Go to the System Indexing page
- With an empty index, click "Create ElasticSearch Index"
- See error
Expected behavior The index should be able to be created.
Release 3.6.1
Desktop
- OS: Windows 10
- Browser: Firefox 122.0
Additional context
Server OS : SLES 12 SP5
Elasticsearch version information:
{
"name" : "sla901t",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "BqAMCaCYSnW3-gvQo94-AA",
"version" : {
"number" : "7.3.1",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "4749ba6",
"build_date" : "2019-08-19T20:19:25.651794Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Java version:
/usr/share/elasticsearch/jdk/bin/java -version
openjdk version "12.0.2" 2019-07-16
OpenJDK Runtime Environment (build 12.0.2+10)
OpenJDK 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)
Is updating ElasticSearch to 7.17.x an option as 7.3.x is very old? Even the used Java version is to new as only Java 11 is currently supported (but should not the main reason why this issue exist).
Edit: The Java version output come from the bundled Java version from ElasticSearch which is in most cases not used from Kitodo.Production application. So ignore my comment regarding to the Java version.
I have not been able to understand why this error suddenly appears. It happened with the last update of Production that the index could no longer be created. Yes, the server is older, and before that, Production ran there without any problems. The solution is trivial—once I found it—but why something else is suddenly necessary, that remains a mystery to me.
I remove the blocking label as the solution is found and it doesn’t block the current master.
Maybe this "change" is coming from updating the ElasticSearch client libraries between Kitodo.Production release 3.5.x to 3.6.x (7.17.7 over 7.17.8 to 7.17.10). If the Kitodo.Production version was 3.4.x or earlier there are maybe more updates of the Elastic Search client library.
The server will also be updated soon. I don't have permission to do this myself. Now that the problem has been solved, it is no longer as urgent.