Как написать регулярное выражение для проверки начинается в Elastic Search - PullRequest
0 голосов
/ 27 сентября 2018

Я создал индекс, используя следующее сопоставление:

PUT test9
{
    "mappings" : {
        "type1" : {
            "properties" : {
                "name" : { "type" : "text"}
            }
        }
    }
}

После этого я добавил в него следующие документы:

PUT test9/type1/1/_create
{
  "name":"suraj"
}

PUT test9/type1/2/_create
{
  "name":"nitesh"
}

PUT test9/type1/3/_create
{
  "name":"suresh"
}

Теперь я хочу проверитьдокументы, чье имя начинается с " sur " с использованием регулярного выражения.Поэтому я использовал следующий запрос:

GET test9/type1/_search
{
  "query": {
    "regexp":{
      "name":"^sur"
    }
  }
}

Приведенный выше запрос не дал никакого результата.Пожалуйста, дайте мне знать, что здесь не так?Как написать регулярное выражение в упругом поиске?Можем ли мы использовать регулярное выражение Монго непосредственно в упругом поиске?

1 Ответ

0 голосов
/ 27 сентября 2018

3 способа достижения этой цели вasticsearch:

GET test9/type1/_search
{
  "query": {
    "prefix": {
      "name": "sur"
    }
  }
}


GET test9/type1/_search
{
  "query": {
    "wildcard":{
      "name":"sur*"
    }
  }
}

GET test9/type1/_search
{
  "query": {
    "regexp":{
      "name":"sur.*"
    }
  }
}

ПРИМЕЧАНИЕ:

Префикс, регулярное выражение и подстановочный знак работают только для not_analyzed частей полей.Поэтому оператор ^ стандартных регулярных выражений не допускается.См. Ссылки на допустимые символы регулярного выражения.

РЕСУРСЫ: https://www.elastic.co/guide/en/elasticsearch/guide/current/_wildcard_and_regexp_queries.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...