From b39c08256ce27679b01daa9f4d3618c0e6e08b83 Mon Sep 17 00:00:00 2001 From: Bhanu Agrawal Date: Tue, 14 Oct 2025 22:49:13 +0530 Subject: [PATCH] Support all stemmer languages in OpenSearch index transformation (#23890) --- .../opensearch/OpenSearchIndexManager.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchIndexManager.java b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchIndexManager.java index ab6040aa500..b33daee172e 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchIndexManager.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/search/opensearch/OpenSearchIndexManager.java @@ -176,21 +176,19 @@ public class OpenSearchIndexManager implements IndexManagementClient { if (!filtersNode.isMissingNode() && filtersNode.isObject()) { ObjectNode filtersObj = (ObjectNode) filtersNode; - // Check if om_stemmer exists and has "name": "kstem" + // Transform stemmer configuration from Elasticsearch to OpenSearch format JsonNode omStemmerNode = filtersObj.path("om_stemmer"); if (!omStemmerNode.isMissingNode() && omStemmerNode.has("type")) { String type = omStemmerNode.get("type").asText(); if ("stemmer".equals(type) && omStemmerNode.has("name")) { String name = omStemmerNode.get("name").asText(); - if ("kstem".equals(name)) { - // Create a new stemmer configuration for OpenSearch - ObjectNode newStemmerNode = JsonUtils.getObjectMapper().createObjectNode(); - newStemmerNode.put("type", "stemmer"); - newStemmerNode.put("language", "kstem"); + // OpenSearch uses "language" instead of "name" for stemmer configuration + ObjectNode newStemmerNode = JsonUtils.getObjectMapper().createObjectNode(); + newStemmerNode.put("type", "stemmer"); + newStemmerNode.put("language", name); - // Replace the om_stemmer configuration - filtersObj.set("om_stemmer", newStemmerNode); - } + // Replace the om_stemmer configuration + filtersObj.set("om_stemmer", newStemmerNode); } } else { LOG.debug("No om_stemmer filter found in settings");