ElasticSearch: запрос_строка '*' подстановочный знак VS префикс запроса - PullRequest
1 голос
/ 16 января 2020

Я написал запрос для всех клиентов, чье имя начинается с c. Я получаю одинаковые результаты с двумя следующими запросами:

#Q1 Query String and * wildcard
GET /client/_search
{
  "query": {
    "query_string": {
      "default_field": "Name.keyword",
      "query": "c*"
    }
  }
}


#Q2 prefix query
GET /client/_search
{
    "query": {
        "prefix": {
            "Name.keyword": {
                "value": "c"
            }
        }
    }
}

Я думаю, что строковый запрос менее эффективен, как объясняется здесь :

Имейте в виду, что подстановочные запросы могут использовать огромный объем памяти и работать очень плохо - просто подумайте, сколько терминов нужно запросить, чтобы соответствовать строке запроса "a * b * c*".

Но может ли кто-нибудь сказать мне, какой из них будет лучшим и более эффективным для моего подхода?

Спасибо.

...