Todos los productos
Search
Centro de documentos

OpenSearch:Expresión de filtro

Última actualización: Sep 04, 2026

Especifique condiciones de filtro para filtrar documentos. La expresión de filtro es opcional.

Sintaxis: filter:"expression". Expresión=Left operand Relational operator Right operand.

  • Operando izquierdo: un campo de atributo o una constante. La constante puede ser un valor numérico o una cadena.

  • Operador relacional: se admiten los siguientes operadores: > < = <= >= !=

  • Operando derecho: un campo de atributo o una constante. La constante puede ser un valor numérico o una cadena.

Ejemplo:

filter:"price > 100": You can use this expression to query the documents in which the value of the price field is greater than 100.
filter:"ids=1": The ids field is a multi-value field. You can use this expression to query the documents in which the values of the ids field contain 1.
filter:"province!=\"Zhejiang\"": You can use this expression to query the documents in which the value of the province field is not Zhejiang.

Ejemplos

Especificar varias condiciones

Sintaxis: filter:"Condition Logical operator Condition"

Condición: una expresión relacional completa, como price > 100.

Operador lógico: operador AND u OR. Si usa el operador AND, el sistema devuelve los documentos que coinciden con ambas condiciones. Si usa el operador OR, devuelve los documentos que coinciden con cualquiera de ellas. También puede encerrar entre paréntesis () las condiciones a las que desee asignar la mayor prioridad.

Ejemplo:

filter:"price > 100 AND categoryId=10": You can use this expression to query the documents in which the value of the categoryId field is 10 and the value of the price field is greater than 100.
filter:"categoryId=100 OR categoryId=10": You can use this expression to query the documents in which the value of the categoryId field is 100 or 10.
filter:"(categoryId=100 OR categoryId=10) AND price > 100": You can use this expression to query the documents in which the value of the categoryId field is 100 or 10, and the value of the price field is greater than 100.

Usar expresiones aritméticas para especificar condiciones

Sintaxis: filter:"Left operand Arithmetic operator Right operand Relational operator Condition value"

  • Operando izquierdo: un campo de atributo o una constante. La constante puede ser un valor numérico o una cadena.

  • Operador aritmético: se admiten los siguientes operadores: + - * /

  • Operando derecho: un campo de atributo o una constante. La constante puede ser un valor numérico o una cadena.

  • Valor de condición: un campo de atributo o una constante.

Ejemplo:

filter:"price*0.5 > 100": You can use this expression to query the documents in which the product of the value of the price field multiplied by 0.5 is greater than 100.
filter:"price-cost > 100": You can use this expression to query the documents in which the difference between the value of the price field and the value of the cost field is greater than 100.
filter:"(price*0.5 > 100) AND categoryId=10": You can use this expression to query the documents in which the product of the value of the price field multiplied by 0.5 is greater than 100 and the value of the categoryId field is 10.

Usar funciones para especificar condiciones

Sintaxis: filter:"Function Relational operator Right operand"

Descripción: Función: función integrada como in o notin. Para obtener más información, consulte la sección "Funciones integradas" de este tema. Si la función invocada devuelve valores de tipo BOOLEAN, no es necesario especificar un operador relacional en la expresión de filtro. También puede usar una función como operando derecho de un operador relacional.

Ejemplo:

filter:"in(id,"1|2|3")": You can use this expression to query the documents in which the value of the id field is 1, 2, or 3.

A continuación se describe cómo usar otras funciones integradas para especificar condiciones.

Funciones integradas

distance

distance: devuelve la distancia esférica entre dos puntos. Por lo general, esta función se usa para calcular distancias en servicios basados en ubicación (LBS).

Ejemplo:

Busque tiendas dentro de un radio de 10 kilómetros desde las coordenadas de un usuario. En este ejemplo, la longitud y latitud del usuario son 120.34256 y 30.56982. Los campos lon y lat, usados en los documentos para especificar la longitud y latitud de una tienda, deben configurarse como campos de atributo.

filter:"distance(lon,lat,\"120.34256\",\"30.56982\")<10"

contain y notcontain

Descripción:

  • contain: comprueba si los valores de un campo a contienen un valor del campo b. El campo a puede ser de valor único o de valores múltiples.

  • notcontain: comprueba si los valores de un campo a no contienen un valor del campo b. El campo a puede ser de valor único o de valores múltiples.

Parámetros:

contain(a,b)

  • a: campo de valor único o de valores múltiples de tipo INT32, INT64 o STRING.

  • b: cadena constante. Las constantes especificadas en la cadena se separan mediante barras verticales (|). Si los valores del campo a coinciden con alguna de las constantes especificadas, esta función devuelve true.

notcontain(a,b)

  • a: campo de valor único o de valores múltiples de tipo INT32, INT64 o STRING.

  • b: cadena constante. Las constantes especificadas en la cadena se separan mediante barras verticales (|). Si los valores del campo a no coinciden con ninguna de las constantes especificadas, esta función devuelve true.

Valores devueltos:

  • contain(a,b): devuelve valores de tipo BOOLEAN. Valores válidos: true y false. Un valor true indica que los valores del campo a contienen un valor del campo b. Un valor false indica que los valores del campo a no contienen un valor del campo b.

  • notcontain(a,b): devuelve valores de tipo BOOLEAN. Valores válidos: true y false. Un valor true indica que los valores del campo a no contienen un valor del campo b. Un valor false indica que los valores del campo a contienen un valor del campo b.

Ejemplo:

Use la función contain para consultar los documentos cuyos valores del campo nid contienen 1, 2 o 3.

filter:"contain(nid, \"1|2|3\")"

Use notcontain para consultar los documentos cuyos valores del campo nid no contienen 1, 2 o 3.

filter:"notcontain(nid, \"1|2|3\")"

in y notin

in or notin: comprueba si los valores de un campo están en una lista específica.

Ejemplo:

Consulte los documentos donde el valor del campo type es 1, 2 o 3. El campo type debe ser de tipo INT.

filter:"in(type, \"1|2|3\")"

Consulte los documentos donde el valor del campo type no es 1, 2 o 3. El campo type debe ser de tipo INT32.

filter:"notin(type, \"1|2|3\")"

Notas de uso

  • Debido a problemas de precisión, el sistema no puede comprobar si un valor de tipo FLOAT o DOUBLE es igual a otro. Si requiere un campo de tipo FLOAT o DOUBLE en una expresión de filtro, use una expresión con un operador mayor que (>) o menor que (<) para definir la relación.

  • Encierre los valores de tipo STRING entre comillas dobles ('') en una expresión de filtro. Puede especificar un operador relacional en una expresión que contenga una cadena para definir la relación entre la cadena y otro valor, pero no puede usar un operador aritmético para ello.

  • Puede usar el operador de igualdad (=) o de desigualdad (!=) en una expresión con campos de tipo STRING, pero no puede usar el operador mayor que (>) ni el operador menor que (<) en dicha expresión.

  • Si usa el operador de igualdad (=) o de desigualdad (!=) para definir la relación entre un campo de valores múltiples y un valor de condición, el sistema devuelve los documentos cuyos valores del campo de valores múltiples incluyen el valor de condición.

  • Las comillas dobles (") en una expresión deben escaparse.