diff --git a/docs/changelog/124690.yaml b/docs/changelog/124690.yaml new file mode 100644 index 0000000000000..07b17e8c64bdf --- /dev/null +++ b/docs/changelog/124690.yaml @@ -0,0 +1,5 @@ +pr: 124690 +summary: Avoid creating known_fields for every check in Alias +area: Indices APIs +type: enhancement +issues: [] diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/alias/Alias.java b/server/src/main/java/org/elasticsearch/action/admin/indices/alias/Alias.java index a6959e5b59e06..e56018fca09d5 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/alias/Alias.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/alias/Alias.java @@ -42,6 +42,14 @@ public class Alias implements Writeable, ToXContentFragment { private static final ParseField SEARCH_ROUTING = new ParseField("search_routing", "searchRouting", "search-routing"); private static final ParseField IS_WRITE_INDEX = new ParseField("is_write_index"); private static final ParseField IS_HIDDEN = new ParseField("is_hidden"); + private static final Set KNOWN_FIELDS = Set.of( + FILTER.getPreferredName(), + ROUTING.getPreferredName(), + INDEX_ROUTING.getPreferredName(), + SEARCH_ROUTING.getPreferredName(), + IS_WRITE_INDEX.getPreferredName(), + IS_HIDDEN.getPreferredName() + ); private String name; @@ -234,15 +242,7 @@ public static Alias fromXContent(XContentParser parser) throws IOException { if (token == XContentParser.Token.FIELD_NAME) { currentFieldName = parser.currentName(); // check if there are any unknown fields - Set knownFieldNames = Set.of( - FILTER.getPreferredName(), - ROUTING.getPreferredName(), - INDEX_ROUTING.getPreferredName(), - SEARCH_ROUTING.getPreferredName(), - IS_WRITE_INDEX.getPreferredName(), - IS_HIDDEN.getPreferredName() - ); - if (knownFieldNames.contains(currentFieldName) == false) { + if (KNOWN_FIELDS.contains(currentFieldName) == false) { throw new IllegalArgumentException("Unknown field [" + currentFieldName + "] in alias [" + alias.name + "]"); } } else if (token == XContentParser.Token.START_OBJECT) {