diff --git a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/extensions/filter.py b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/extensions/filter.py index f28d2507..a0ab3777 100644 --- a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/extensions/filter.py +++ b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/extensions/filter.py @@ -13,6 +13,7 @@ from __future__ import annotations import datetime +import re from enum import Enum from typing import List, Union @@ -252,20 +253,17 @@ def to_es(arg: Arg): raise RuntimeError(f"unknown arg {repr(arg)}") -def cql2_like_to_es(input_string): - """Convert arugument in CQL2 ('_' and '%') to Elasticsearch wildcard operators ('?' and '*', respectively). Handle escape characters and handle Elasticsearch wildcards directly.""" - es_string = "" - escape = False +def cql2_like_to_es(string): + """Convert wildcard characters in CQL2 ('_' and '%') to Elasticsearch wildcard characters ('?' and '*', respectively). Handle escape characters and pass through Elasticsearch wildcards.""" + percent_pattern = r"(?