Диапазон с эластичным поиском

Я пытаюсь найти сластиком поиска с диапазоном запроса. (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"}

Как это можно исправить?

0

Решение

Лучший и самый эффективный способ — изменить отображение поля на

{
"order_no": {
"type": "integer",
"index": "not_analyzed"}
}

Запросы диапазона строк очень медленные по сравнению с запросами с числовым диапазоном.

Если вы не можете изменить отображение поля, тогда другой вариант — заполнить входные значения нулями при индексации, а также при поиске

{
"query": {
"range": {
"order_no": {
"gte": 00002000,
"lte": 00002001
}
}
}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]