ElasticSearch с n разделением слов и регулярным выражением (с гемом Tire)

Я использую ElasticSearch (с драгоценным камнем Tire). У меня есть следующий запрос, который будет соответствовать escaped cat, escaped black cat, так далее.

Мне было интересно, можно ли попросить ElasticSearch выполнить поиск по следующим критериям:

  1. "избежал [ровно 0 или 1 слово] кошка" т.е.) escaped \w{0,1} cat
  2. "сбежал [n слов] кот" то есть) escaped \w{n} cat
  3. "избежал [регулярное выражение здесь] кошка" т.е.) escaped (big|black|white) cat

Текущий поисковый запрос:

{
  "query": {
    "bool": {
      "should": [
        {
          "query_string": {
            "query": "\"escaped ? cat\"",
            "analyzer": "snowball"
          }
        },
        {
          "query_string": {
            "query": "\"escaped ? cat\"",
            "default_operator": "and"
          }
        },
        {
          "flt_field": {
            "content": {
              "like_text": "\"escaped ? cat\""
            }
          }
        },
        {
          "mlt_field": {
            "content": {
              "like_text": "\"escaped ? cat\""
            }
          }
        }
      ]
    }
  }
}

1 ответ

Я думаю, что это возможно с помощью регулярного выражения Elasticsearch.

{
    "regexp":{
        "name.first": "s.*y"
    }
}

Также есть фильтр регулярных выражений

Другие вопросы по тегам