From bea73d1046dc086d155df21b764711d66463318d Mon Sep 17 00:00:00 2001 From: "waleed.mujahid" Date: Mon, 1 Sep 2025 14:45:50 +0500 Subject: [PATCH] fix: Use correct elasticsearch field name for .raw field facet filtering When filtering by facets that use .raw fields (like language.raw), the filter_by_facets method was incorrectly using the facet configuration key instead of the actual elasticsearch field name, causing filters to fail for case-sensitive .raw fields. --- .../apps/edx_elasticsearch_dsl_extensions/backends.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/course_discovery/apps/edx_elasticsearch_dsl_extensions/backends.py b/course_discovery/apps/edx_elasticsearch_dsl_extensions/backends.py index f3bf2897cd..157aa606e2 100644 --- a/course_discovery/apps/edx_elasticsearch_dsl_extensions/backends.py +++ b/course_discovery/apps/edx_elasticsearch_dsl_extensions/backends.py @@ -121,7 +121,9 @@ def filter_by_facets(self, request, queryset, view): if not field_facets.get(field): raise ParseError('The selected query facet [{facet}] is not valid.'.format(facet=field)) - _filters.append(ESDSLQ('term', **{field: value})) + # Use the actual elasticsearch field name from configuration, not the facet key + elasticsearch_field = field_facets[field]['field'] + _filters.append(ESDSLQ('term', **{elasticsearch_field: value})) queryset = queryset.query('bool', **{'filter': _filters}) return queryset