Использование лидирующего подстановочного знака может быть довольно дорогим ... Если вы в основном ищете «подстроки» чисел с этим подстановочным знаком, и его формат стандартизирован (представьте номер машины в виде XX-12345-AB
), вы можете извлечь просто эти числа в дополнительное поле, а затем выполнить диапазон запросов к нему. Это, безусловно, будет быстрее, чем подстановочные знаки для строк.
Другой вариант - использовать регулярные выражения , что будет полезно, если вы, например, знаете позицию, в которой вы хотите искать , Оказывается, IMEI имеют определенную структуру - AA-BBBBBB-CCCCCC-EE
- из вики
Так что если вы ища совпадение серийного номера, вы переходите к индексу 8:
GET /_search
{
"query": {
"regexp": {
"vehicleNumber": {
"value": ".{8,}119.*"
}
}
}
}
Подводя итог, regexp
и wildcard
используйте тот же автомат на заднем плане таким образом, при выполнении запросов leading *
выбора между этими двумя показателями нет. Но когда вы знаете позицию, я подозреваю, что regexp
может быть более оптимизирован для этого.