Todos los productos
Search
Centro de documentos

OpenSearch:Filtro de resultados: cláusula filter

Última actualización: Sep 04, 2026

La cláusula filter acota los resultados de una consulta al aplicar condiciones basadas en sus requisitos de negocio. Esta cláusula filtra adicionalmente los documentos que devuelve una cláusula de consulta para obtener únicamente los resultados necesarios.

Sintaxis

El formato de una condición de filtro es: campo=valor.

  • Las condiciones de filtro admiten operadores condicionales como >, <, =, <=, >=, !=, in y notin, así como operadores aritméticos como +, -, *, /, &, ^ y |.

  • Puede combinar varias condiciones de filtro con los operadores lógicos AND, OR y (). Estos operadores deben escribirse en mayúsculas.

Notas de uso

  1. La cláusula filter es opcional.

  2. Los campos utilizados en una cláusula filter deben configurarse como campos de atributo en el esquema de la aplicación.

  3. Debido a problemas de precisión, las comprobaciones de igualdad en campos FLOAT o DOUBLE no son fiables. Utilice en su lugar una expresión de rango con los operadores > y <.

  4. Los valores LITERAL deben ir entre comillas dobles ('') en la cláusula filter. Los campos LITERAL admiten operaciones relacionales, pero no aritméticas. Si omite las comillas, se devuelve el código de error 6135: The value type of the constant expression is invalid.

  5. Puede usar funciones de funcionalidad, como distance, en la cláusula filter para ordenar resultados.

  6. Los campos LITERAL solo admiten los operadores de igualdad (=) y desigualdad (!=). No se admiten los operadores > y < porque los campos LITERAL no están segmentados y requieren coincidencias exactas.

  7. Las funciones in y notin comprueban si los valores de un campo existen en una lista específica. Solo se admiten campos INT, LITERAL, FLOAT y DOUBLE. No se admiten campos ARRAY ni TEXT, tampoco el analizador de búsqueda difusa. Para más información, consulte in and notin.

  8. No se pueden crear campos de atributo a partir de tipos de texto como TEXT y SHORT_TEXT. Solo se admiten tipos numéricos o no textuales, incluidos INT, INT_ARRAY, FLOAT, FLOAT_ARRAY, DOUBLE, DOUBLE_ARRAY, LITERAL y LITERAL_ARRAY.

Funciones de funcionalidad compatibles

  • distance: devuelve la distancia esférica entre dos puntos; se usa habitualmente en cálculos de servicios basados en ubicación (LBS).

Ejemplo:

Busque restaurantes KFC dentro de un radio de 10 kilómetros respecto a un usuario ubicado en las coordenadas (120.34256, 30.56982). Los campos lon y lat, que representan la ubicación de los KFC, deben configurarse como campos de atributo.

query=default:'KFC'&&filter=distance(lon,lat,"120.34256","30.56982")<10
  • in_polygon: comprueba si un punto se encuentra dentro de un área geográfica poligonal; se utiliza comúnmente para verificar radios de entrega.

Ejemplo:

Verifique si un usuario en las coordenadas (120.307234, 39.294245) está dentro del radio de entrega definido por el campo coordinates. La siguiente consulta devuelve los comercios cuya zona de entrega cubre al usuario:

query=default:'Foods'&&filter=in_polygon(coordinates, 120.307234, 39.294245)>0
  • in_query_polygon: verifica si un punto especificado en un documento se encuentra dentro de un área geográfica poligonal determinada.

Ejemplo:

Busque restaurantes KFC en el distrito comercial Yintai (xA,yA,xB,Yb,xC,Yc;xD,yD,xE,yE,xF,yF,xG,yG). El campo point se utiliza para almacenar la ubicación geográfica de los KFC.

query=default:'KFC'&&filter=in_query_polygon("polygons",point)>0&&kvpairs=polygons:xA\,yA\,xB\,Yb\,xC\,Yc;xD\,yD\,xE\,yE\,xF\,yF\,xG\,yG
  • bit_struct: divide cada valor en varias partes para un campo de tipo INT_ARRAY y realiza una operación específica sobre dichas partes.

Ejemplo:

Busque tiendas abiertas durante un intervalo de tiempo específico. El campo open_time (tipo INT_ARRAY) almacena el horario comercial como enteros de 64 bits: los primeros 32 bits representan la hora de apertura y los últimos 32 bits la hora de cierre. Para encontrar tiendas abiertas de 14:00 a 15:30, convierta cada hora a minutos transcurridos desde las 00:00: 14:00 equivale a 840 y 15:30 a 930.

filter=bit_struct(open_time, "0-31,32-63","overlap,$1,$2,840,930")!=-1
  • fieldlen: calcula la longitud del valor de un campo de tipo LITERAL.

Ejemplo:

Busque documentos en los que el valor del campo usr_name no esté vacío.

query=default:'Keyword'&&filter=fieldlen(usr_name)>0
  • in or notin: comprueba si los valores de un campo se encuentran en una lista específica.

Ejemplo:

Recupere documentos que contengan "iPhone" y cuyo campo type tenga un valor de 1, 2 o 3. El campo type es de tipo INT.

query=default:'iphone'&&filter=in(type, "1|2|3")

Recupere documentos que contengan "iPhone" y cuyo campo type no tenga un valor de 1, 2 o 3. El campo type es de tipo INT32.

query=default:'iphone'&&filter=notin(type, "1|2|3")
  • multi_attr: devuelve el valor de un campo de arreglo específico en una posición determinada.

Ejemplo:

Un producto puede tener varios precios (de mercado, con descuento y de venta) almacenados en el campo prices. La siguiente consulta busca celulares con un precio de venta inferior a 1,000:

query=default:'Mobile phone'&&filter=multi_attr(price,2)<1000

Ejemplos

  1. El campo category, de tipo INT32 en la aplicación, tiene valores como 1 (noticias) y 2 (bbs). Use una de las siguientes cláusulas de consulta para buscar documentos que contengan "Zhejiang University" y en los que el campo category sea igual a 2:

     query=default:'Zhejiang University' AND category_search:'2'   // The index field category_search is created for the category field.
      // Or
     query=default:'Zhejiang University'&&filter=category=2
  2. En una aplicación de búsqueda de novelas, el campo tags de tipo STRING_ARRAY especifica las siguientes etiquetas según el género literario: palace, suspense and horror, y romance. Use la siguiente cláusula de consulta para buscar documentos que contengan "Empresses in the palace" y en los que el campo tags tenga el valor "palace":

    query=default:'Empresses in the palace'&&filter=tags="palace"
  3. En una aplicación de comercio electrónico existen los campos hit y sale de tipo INT32, y el campo create_time de tipo INT64. Use la siguiente cláusula de consulta para buscar documentos que cumplan estas condiciones: 1. Que contengan "dress". 2. Que el producto del valor del campo rate por la suma de los valores de los campos hit y sale supere 10000. 3. Que el valor del campo create_time sea menor que 1402345600.

    query=default:'dress'&&filter=(hit+sale)*rate>10000 AND create_time<1402345600