Регулярное выражение ElasticSearch не возвращает результата

#elasticsearch

#elasticsearch

Вопрос:

У меня есть этот запрос с использованием match type, и он возвращает результаты.

 POST /kibana_sample_data_ecommerce/_search
{
    "query": {
        "match": {
            "customer_first_name": "Mary"
        }
    }
}
  

Но когда я использую regex type, он не возвращает результата.

 POST /kibana_sample_data_ecommerce/_search
{
    "query": {
        "regexp": {
            "customer_first_name": "M[a-z]ry"
        }
    }
}
  

введите описание изображения здесь

Комментарии:

1. Какой тип отображения customer_first_name ?

2. «customer_first_name»: { «тип»: «текст», «поля»: { «ключевое слово» : { «тип»: «ключевое слово», «ignore_above» : 256 } } },

Ответ №1:

Поскольку customer_first_name анализируется, вам нужно сделать это следующим образом (см. Нижний регистр m ):

 POST /kibana_sample_data_ecommerce/_search
{
    "query": {
        "regexp": {
            "customer_first_name": "m[a-z]ry"
        }
    }
}
  

Или вы также можете использовать keyword подполе для достижения желаемого:

 POST /kibana_sample_data_ecommerce/_search
{
    "query": {
        "regexp": {
            "customer_first_name.keyword": "M[a-z]ry"
        }
    }
}