diff --git a/src/snovault/elasticsearch/create_mapping.py b/src/snovault/elasticsearch/create_mapping.py index 01d6c60d7..2b77e15f9 100644 --- a/src/snovault/elasticsearch/create_mapping.py +++ b/src/snovault/elasticsearch/create_mapping.py @@ -113,14 +113,9 @@ def schema_mapping(field, schema, top_level=False): 'ignore_above': KW_IGNORE_ABOVE }, 'lower_case_sort': { - 'type': 'text', - 'analyzer': 'case_insensistive_sort', - 'fields': { - 'keyword': { - 'type': 'keyword', - 'ignore_above': KW_IGNORE_ABOVE - } - } + 'type': 'keyword', + 'normalizer': 'case_insensistive_sort', + 'ignore_above': KW_IGNORE_ABOVE } } } @@ -138,14 +133,9 @@ def schema_mapping(field, schema, top_level=False): 'ignore_above': KW_IGNORE_ABOVE }, 'lower_case_sort': { - 'type': 'text', - 'analyzer': 'case_insensistive_sort', - 'fields': { - 'keyword': { - 'type': 'keyword', - 'ignore_above': KW_IGNORE_ABOVE - } - } + 'type': 'keyword', + 'normalizer': 'case_insensistive_sort', + 'ignore_above': KW_IGNORE_ABOVE } } } @@ -159,14 +149,9 @@ def schema_mapping(field, schema, top_level=False): 'ignore_above': KW_IGNORE_ABOVE }, 'lower_case_sort': { - 'type': 'text', - 'analyzer': 'case_insensistive_sort', - 'fields': { - 'keyword': { - 'type': 'keyword', - 'ignore_above': KW_IGNORE_ABOVE - } - } + 'type': 'keyword', + 'normalizer': 'case_insensistive_sort', + 'ignore_above': KW_IGNORE_ABOVE } } } @@ -184,14 +169,9 @@ def schema_mapping(field, schema, top_level=False): 'ignore_above': KW_IGNORE_ABOVE }, 'lower_case_sort': { - 'type': 'text', - 'analyzer': 'case_insensistive_sort', - 'fields': { - 'keyword': { - 'type': 'keyword', - 'ignore_above': KW_IGNORE_ABOVE - } - } + 'type': 'keyword', + 'normalizer': 'case_insensistive_sort', + 'ignore_above': KW_IGNORE_ABOVE } } } @@ -210,14 +190,9 @@ def schema_mapping(field, schema, top_level=False): 'ignore_above': KW_IGNORE_ABOVE }, 'lower_case_sort': { - 'type': 'text', - 'analyzer': 'case_insensistive_sort', - 'fields': { - 'keyword': { - 'type': 'keyword', - 'ignore_above': KW_IGNORE_ABOVE - } - } + 'type': 'keyword', + 'normalizer': 'case_insensistive_sort', + 'ignore_above': KW_IGNORE_ABOVE } } } @@ -231,14 +206,9 @@ def schema_mapping(field, schema, top_level=False): 'ignore_above': KW_IGNORE_ABOVE }, 'lower_case_sort': { - 'type': 'text', - 'analyzer': 'case_insensistive_sort', - 'fields': { - 'keyword': { - 'type': 'keyword', - 'ignore_above': KW_IGNORE_ABOVE - } - } + 'type': 'keyword', + 'normalizer': 'case_insensistive_sort', + 'ignore_above': KW_IGNORE_ABOVE } } } @@ -296,12 +266,6 @@ def index_settings(): 'asciifolding' ] }, - 'case_insensistive_sort': { - 'tokenizer': 'keyword', - 'filter': [ - 'lowercase', - ] - }, 'snovault_path_analyzer': { 'type': 'custom', 'tokenizer': 'snovault_path_tokenizer', @@ -313,6 +277,12 @@ def index_settings(): 'type': 'path_hierarchy', 'reverse': True } + }, + 'normalizer': { + 'case_insensistive_sort': { + 'type': 'custom', + 'filter': ['lowercase'] + } } } } diff --git a/src/snowflakes/search.py b/src/snowflakes/search.py index 0653a9ad3..0ec008669 100644 --- a/src/snowflakes/search.py +++ b/src/snowflakes/search.py @@ -552,7 +552,7 @@ def add_to_sort_dict(requested_sort): } else: # fallback case, applies to all string type:string fields - sort['embedded.' + name + '.lower_case_sort.keyword'] = result_sort[name] = { + sort['embedded.' + name + '.lower_case_sort'] = result_sort[name] = { 'order': order, 'unmapped_type': 'keyword', 'missing': '_last' @@ -574,7 +574,7 @@ def add_to_sort_dict(requested_sort): for k, v in type_schema['sort_by'].items(): # Should always sort on raw field rather than analyzed field # OR search on lower_case_sort for case insensitive results - sort['embedded.' + k + '.lower_case_sort.keyword'] = result_sort[k] = v + sort['embedded.' + k + '.lower_case_sort'] = result_sort[k] = v # Default is most recent first, then alphabetical by label if not sort: sort['embedded.date_created.raw'] = result_sort['date_created'] = {