Las consultas anidadas permiten consultar datos en las filas secundarias de campos anidados. Los campos anidados no se pueden consultar directamente. Para consultar un campo anidado, debe especificar la ruta del campo y una subconsulta dentro de un objeto NestedQuery. La subconsulta puede ser de cualquier tipo.
Requisitos previos
Se inicializó una instancia de OTSClient. Para más información, consulte Initialize an OTSClient instance.
Se creó una tabla de datos y se escribieron datos en ella. Para más información, consulte Create a data table y Write data.
Se creó un índice de búsqueda para la tabla de datos. Para más información, consulte Create a search index.
Parámetros
|
Parámetro |
Descripción |
|
table_name |
El nombre de la tabla de datos. |
|
index_name |
El nombre del índice de búsqueda. |
|
path |
La ruta del campo anidado. El campo anidado utiliza una estructura de árbol. Por ejemplo, news.title especifica el subcampo title dentro del campo anidado llamado news. |
|
query |
La consulta sobre el subcampo dentro del campo anidado. Esta consulta puede ser de cualquier tipo. |
|
score_mode |
El valor que se utiliza para calcular la puntuación cuando un campo contiene varios valores. |
Ejemplos
A continuación se muestra un código de ejemplo para consultar las filas donde el valor de la columna nested.nested_keyword es 'sub':
$request = array(
'table_name' => 'php_sdk_test',
'index_name' => 'php_sdk_test_search_index',
'search_query' => array(
'offset' => 0,
'limit' => 2,
'get_total_count' => true,
'query' => array(
'query_type' => QueryTypeConst::NESTED_QUERY,
'score_mode' => ScoreModeConst::SCORE_MODE_AVG,
'query' => array(
'path' => "nested",
'query' => array(
'query_type' => QueryTypeConst::TERM_QUERY,
'query' => array(
'field_name' => 'nested.nested_keyword',
'term' => 'sub'
)
)
)
),
'sort' => array(
array(
'field_sort' => array(
'field_name' => 'nested.nested_long',
'order' => SortOrderConst::SORT_ORDER_DESC,
'nested_filter' => array(
'path' => "nested",
'query' => array(
'query_type' => QueryTypeConst::TERM_QUERY,
'query' => array(
'field_name' => 'nested.nested_keyword',
'term' => 'sub'
)
)
)
)
),
)
),
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
'return_names' => array('nested')
)
);
$response = $otsClient->search($request);
Preguntas frecuentes
Referencias
-
Al usar un índice de búsqueda para consultar datos, puede utilizar los siguientes métodos de consulta: term query, terms query, match all query, match query, match phrase query, prefix query, range query, wildcard query, Boolean query, geo query, nested query y exists query. Estos métodos permiten consultar datos desde múltiples dimensiones según sus necesidades empresariales.
Si desea ordenar o paginar las filas que cumplen con las condiciones de consulta, utilice la función de ordenamiento y paginación. Para más información, consulte Sorting and paging.
Para colapsar el conjunto de resultados con base en una columna específica, utilice la función de colapso (distinto). De este modo, los datos del tipo especificado aparecen solo una vez en los resultados de la consulta. Para más información, consulte Collapse (distinct).
Si necesita analizar datos en una tabla, como obtener valores extremos, sumas o el número total de filas, ejecute operaciones de agregación o sentencias SQL. Para más información, consulte Aggregation y SQL query.
Para obtener rápidamente todas las filas que cumplen con las condiciones de consulta sin necesidad de ordenarlas, llame a las operaciones ParallelScan y ComputeSplits para usar la función de escaneo paralelo. Para más información, consulte Parallel scan.