Alias aliasMapper name is defined both as an alias and a concrete field – How to solve this Elasticsearch exception

Opster Team

August-23, Version: 7.1-8.9

Briefly, this error occurs when an alias name in Elasticsearch is also used as a field name in the same index. This creates a conflict as Elasticsearch cannot differentiate between the alias and the field. To resolve this issue, you can either rename the alias or the field to avoid the naming conflict. Alternatively, you can delete and recreate the alias or field with a different name. It’s important to ensure unique naming conventions to avoid such conflicts.

This guide will help you check for common problems that cause the log ” Alias [” + aliasMapper.name() + “] is defined both as an alias and a concrete field ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: alias, index.

Log Context

Log “Alias [” + aliasMapper.name() + “] is defined both as an alias and a concrete field” class name is MappingLookup.java. We extracted the following from Elasticsearch source code for those seeking an in-depth context :

 for (FieldAliasMapper aliasMapper : aliasMappers) {
 if (objects.containsKey(aliasMapper.name())) {
 throw new MapperParsingException("Alias [" + aliasMapper.name() + "] is defined both as an object and an alias");
 }
 if (fieldMappers.put(aliasMapper.name(); aliasMapper) != null) {
 throw new MapperParsingException("Alias [" + aliasMapper.name() + "] is defined both as an alias and a concrete field");
 }
 }  final Collection runtimeFields = mapping.getRoot().runtimeFields();
 this.fieldTypeLookup = new FieldTypeLookup(mappers; aliasMappers; runtimeFields);

 

How helpful was this guide?

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?