Я пытаюсь найти сластиком поиска с диапазоном запроса. (PHP)
Это мой исходный код
$searchParams['body']['query']['range']['order_no']['gte'] = "2000";
$searchParams['body']['query']['range']['order_no']['lte'] = "2001";
знак равно
{
"query": {
"range": {
"order_no": {
"gte": 2000,
"lte": 2001
}
}
}
}
Но в результате у него есть order_no:
2000
2001
2000001
200000
....
Я хочу показать только
2000
2001
Это поле имеет отображение:
"order_no" : {
"type" : "string",
"index" : "not_analyzed"}
Как это можно исправить?
Лучший и самый эффективный способ — изменить отображение поля на
{
"order_no": {
"type": "integer",
"index": "not_analyzed"}
}
Запросы диапазона строк очень медленные по сравнению с запросами с числовым диапазоном.
Если вы не можете изменить отображение поля, тогда другой вариант — заполнить входные значения нулями при индексации, а также при поиске
{
"query": {
"range": {
"order_no": {
"gte": 00002000,
"lte": 00002001
}
}
}
}
Других решений пока нет …