Todos los productos
Search
Centro de documentos

OpenSearch:Búsqueda de personas cercanas

Última actualización: Sep 04, 2026

OpenSearch permite buscar personas o lugares cercanos. Esta guía explica cómo usar coordenadas geográficas para buscar de forma eficiente y ordenar los resultados por distancia.

Solución

  1. Configure un campo GEO_POINT en el esquema de su aplicación y un índice espacial para recuperar los resultados.

  2. Configure un complemento de procesamiento de datos para el campo GEO_POINT.

  3. Consulte la sintaxis para las búsquedas de prueba y aprenda a agregar criterios de ordenamiento.

Procedimiento

  1. Configure el esquema de la aplicación

En el esquema de la aplicación de OpenSearch, agregue los campos lon y lat de tipo DOUBLE para las coordenadas geográficas. Luego, cree un campo GEO_POINT llamado company_lon_lat (el nombre del campo es personalizable). En el esquema de índices, establezca el analizador de company_lon_lat como Geographic Location Analyzer y agréguelo como campo de atributo. En la lista de campos de índice, cree un índice denominado company_lng_lat, defina su campo incluido como company_lon_lat y seleccione Geographic Location Analyzer como método de análisis. En la lista de campos de atributo del esquema de la aplicación, localice el campo company_lon_lat y haga clic en Add as Attribute Field para agregarlo. Para obtener más información sobre el proceso de creación de aplicaciones, consulte la guía de inicio rápido.

  1. Configure el origen de datos

Al configurar la asignación de campos, use el complemento de procesamiento de datos StringCatenateExtractor para el campo company_lon_lat. Este complemento concatena el campo de longitud existente lon y el campo de latitud lat. Después, une los valores con un espacio y escribe el resultado en el campo destino company_lon_lat.

Nota: Puede omitir la asignación para el campo destino company_lon_lat.

Para obtener más información sobre el complemento, consulte Data processing plug-ins.

  1. Pruebe la búsqueda

Ejemplo: query=name:'Alibaba' AND company_lon_lat:'circle(116.5806 39.99624, 1000)' Descripción: Esta consulta busca documentos de la empresa "Alibaba" que se encuentran dentro de un radio de 1,000 metros (1 km) respecto a las coordenadas '116.5806 39.99624'. Sintaxis: query=spatial_index:'circle(LON LAT,Radius)'

  • LON representa la longitud, LAT la latitud y radius el radio de búsqueda en metros. Para obtener un mejor rendimiento, use un radio de 10 km o menos, ya que el desempeño disminuye significativamente más allá de este rango.

  • Para obtener más información sobre las funciones y la sintaxis, consulte range search.

  1. Agregue una expresión de ordenamiento fino

Para ordenar por distancia, pase las coordenadas del usuario en el parámetro kvpairs: kvpairs=long_lat_in_query:'120.34256 30.56982'

La expresión de ordenamiento fino es:

-distance(company_lon_lat, long_lat_in_query)

Sintaxis:

distance(location1, location2, outputname, defaultvalue)

Parámetros:

  • location1: Nombre de un campo de tipo GEO_POINT.

  • location2: Nombre de un campo definido en la cláusula kvpairs de la cadena de consulta. El valor debe tener el formato LON LAT obligatorio para los campos GEO_POINT.

  • outputname: Opcional. Especifica un nombre para la distancia calculada que se devolverá en los resultados.

  • defaultvalue: Opcional. Especifica la distancia que se devolverá si el campo location1 de un documento no es válido. Si se omite, el valor predeterminado es 100000.

Nota: En el ejemplo, long_lat_in_query debe definirse en kvpairs. Por ejemplo: kvpairs=long_lat_in_query:120.34256 30.56982