Todos los productos
Search
Centro de documentos

OpenSearch:Consulta de rango

Última actualización: Sep 18, 2026

Las consultas de rango filtran resultados por valores numéricos, marcas de tiempo o coordenadas geográficas. Entre sus aplicaciones típicas se encuentran filtrar productos por precio, buscar registros dentro de una ventana de tiempo y localizar comercios cercanos en escenarios online-to-offline (O2O).

Para ejecutar una consulta de rango, complete estos pasos en orden:

  1. Defina el tipo de campo en el esquema de la aplicación.

  2. Cree un índice de campo único en el esquema de índices con el analizador correcto.

  3. Escriba una consulta de rango con la sintaxis correspondiente a su tipo de campo.

Tipos de campo compatibles

Las consultas de rango solo admiten tres tipos de campo. Cada uno requiere un índice de campo único dedicado; los índices compuestos no son compatibles con estos tipos.

Tipo de campo

Descripción

Límite

INT

Entero de 64 bits

Máximo 4 campos

TIMESTAMP

Marca de tiempo entera en milisegundos (≥ 0). La precisión de almacenamiento es de milisegundos, pero la de las consultas es de segundos. Durante las consultas, los últimos tres dígitos se tratan como 000.

Máximo 4 campos

GEO_POINT

Cadena con el formato lon lat, donde ambos valores son números de doble precisión separados por un espacio. Rango de longitud: [−180, 180]. Rango de latitud: [−90, 90].

Máximo 2 campos

Cree índices

En el esquema de índices, cree un índice de campo único para cada campo de consulta de rango y asigne el analizador correcto.

Tipo de campo

Analizador

Comportamiento del índice

INT

Análisis numérico

Sin tokenización; construye un índice numérico para consultas de rango

TIMESTAMP

Análisis numérico

Sin tokenización; construye un índice numérico para consultas de rango

GEO_POINT

Ubicación geográfica

Sin tokenización; construye un índice numérico para consultas de rango

Sintaxis de consulta

INT y TIMESTAMP

Ambos tipos de campo usan la misma notación de corchetes. Los corchetes [ ] indican inclusión y los paréntesis ( ) indican exclusión. Omita un límite para dejar ese extremo abierto.

index:[number1,number2]   // number1 <= index <= number2
index:[number1,number2)   // number1 <= index < number2
index:(number1,number2]   // number1 < index <= number2
index:(number1,number2)   // number1 < index < number2
index:[number1,)          // index >= number1
index:(number1,)          // index > number1
index:(,number2]          // index <= number2
index:(,number2)          // index < number2
No coloque comillas inmediatamente después de los dos puntos del índice.

Ejemplo de rango de precios: busque "dress" con un precio entre 100 y 200:

query=index_text:'dress' AND index_price:[100,200]

Ejemplo de rango de marca de tiempo: busque noticias sobre "Beijing" del 1 al 3 de junio de 2019:

query=index_text:'Beijing' AND index_timestamp:[1559318400000,1559577599000]
Importante

En los índices de análisis numérico, el límite superior debe ser mayor o igual que el inferior. Un rango invertido devuelve el error de sintaxis 6112 (Query clause error).

Precisión de TIMESTAMP: la precisión de las consultas se limita a segundos. Durante una consulta, los últimos tres dígitos de cualquier valor de marca de tiempo se establecen en 000. El rango válido es [0, 4102416000000], que corresponde desde 1970-01-01 00:00 hasta 2100-01-01 00:00. Los valores superiores al límite máximo se ajustan a 4102416000000. Para diferenciar valores más allá de este límite, utilice un filtro.

GEO_POINT

Se admiten tres formas de consulta espacial: punto, círculo y rectángulo.

Consulta de punto: busca documentos en una coordenada exacta:

query=spatial_index:'point(LON LAT)'

Ejemplo: busque documentos en la coordenada (116.3906, 39.92324):

query=spatial_index:'point(116.3906 39.92324)'

Consulta de círculo: busca documentos dentro de un radio desde un punto central:

query=spatial_index:'circle(LON LAT,Radius)'

El valor Radius se expresa en metros. El rendimiento de la consulta es óptimo con radios de hasta 10 km y disminuye significativamente si se supera esa distancia.

Ejemplo: busque documentos a menos de 1,000 metros de (116.5806, 39.99624):

query=spatial_index:'circle(116.5806 39.99624, 1000)'

Consulta de rectángulo: busca documentos dentro de un rectángulo delimitador:

query=spatial_index:'rectangle(minX minY,maxX maxY)'
  • Latitud: maxY debe ser ≥ minY. Si se invierte el orden, el sistema lo corrige automáticamente.

  • Longitud: el rango de minX a maxX se interpreta de oeste a este. Si se invierte, la consulta devuelve un rango incorrecto.

Ejemplo: busque documentos dentro del rectángulo definido por (116.3906, 39.92324) y (116.3907, 39.92325):

query=spatial_index:'rectangle(116.3906 39.92324, 116.3907 39.92325)'
Los valores válidos de GEO_POINT son [−180, 180] para la longitud y [−90, 90] para la latitud.