Este tema describe cómo ejecutar consultas anidadas para consultar los datos en las filas secundarias de columnas anidadas. Debe usar la operación NestedQuery para envolver una columna anidada antes de consultarla. Cuando llame a la operación NestedQuery, especifique una subconsulta de cualquier tipo y la ruta de la columna anidada.
Requisitos previos
Se inicializó una instancia de OTSClient. Para obtener más información, consulte Initialize an OTSClient instance.
Se creó una tabla de datos y se escribieron datos en ella. Para obtener más información, consulte Create data tables y Write data.
Se creó un índice de búsqueda para la tabla de datos. Para obtener más información, consulte Create search indexes.
Parámetros
|
Parámetro |
Descripción |
|
Path |
La ruta de la columna anidada. Esta ruta es similar a una estructura de árbol. Por ejemplo, news.title indica la subcolumna title dentro de la columna news de tipo anidado. |
|
Query |
La consulta sobre la subcolumna dentro de la columna anidada. Puede ser de cualquier tipo de consulta. |
|
ScoreMode |
Define qué valor se utiliza para calcular la puntuación cuando la columna contiene varios valores. |
|
TableName |
El nombre de la tabla de datos. |
|
IndexName |
El nombre del índice de búsqueda. |
|
ColumnsToGet |
Indica si se devuelven todas las columnas de las filas que cumplen las condiciones de la consulta. Puede especificar los parámetros ReturnAll, Columns y ReturnAllFromIndex. De forma predeterminada,
Establezca |
Ejemplo
A continuación se muestra un código de ejemplo que consulta las filas donde el valor de la subcolumna nested_1, dentro de la columna col_nested, es "tablestore". Se devuelven todas las columnas del índice de búsqueda.
/// <summary>
/// Query the rows in which the value of the col1_nested.nested_1 column is "tablestore". In this example, the col1_nested column is a nested column and contains the nested_1 and nested_2 subcolumns.
/// </summary>
/// <param name="otsClient"></param>
public static void NestedQuery(OTSClient otsClient)
{
var searchQuery = new SearchQuery();
// Return the total number of rows that meet the query conditions.
searchQuery.GetTotalCount = true;
var nestedQuery = new NestedQuery();
nestedQuery.Path = "col1_nested"; // Specify the path of the nested column.
TermQuery termQuery = new TermQuery("col1_nested.nested_1",new ColumnValue("tablestore"));// Construct a subquery of for the nested query.
nestedQuery.Query = termQuery;
nestedQuery.ScoreMode = ScoreMode.None;
var request = new SearchRequest(TableName, IndexName, searchQuery);
// You can specify the ColumnsToGet parameter to return the columns that you specify, all columns in the rows that meet the query conditions, or all columns in the search index. If you do not specify this parameter, only the primary key columns are returned.
request.ColumnsToGet = new ColumnsToGet()
{
// Return all columns in the search index.
ReturnAllFromIndex = true
// Return the columns that you specify.
//Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
// Return all columns in the rows that meet the query conditions.
//ReturnAll = true
};
var response = otsClient.Search(request);
Console.WriteLine("Total Count:" + response.TotalCount); // Display the total number of rows that meet the query conditions instead of the number of returned rows.
}
Preguntas frecuentes
Referencias
-
Cuando use 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 le permiten consultar datos desde múltiples dimensiones según sus necesidades de negocio.
Mediante las funciones de ordenamiento y paginación, puede ordenar o paginar las filas que cumplan las condiciones de la consulta. Para obtener más información, consulte Sorting and paging.
La función collapse (distinct) permite agrupar el conjunto de resultados con base en una columna específica. De esta manera, los datos del tipo indicado aparecen solo una vez en los resultados de la consulta. Para obtener más información, consulte Collapse (distinct).
Si necesita analizar los datos de una tabla, utilice la función de agregación de la operación Search o ejecute instrucciones SQL. Por ejemplo, puede obtener los valores mínimo y máximo, la suma y el número total de filas. Para obtener más información, consulte Aggregation y SQL query.
Para obtener todas las filas que cumplan las condiciones de la consulta sin necesidad de ordenarlas, llame a las operaciones ParallelScan y ComputeSplits para usar la función de escaneo paralelo. Para obtener más información, consulte Parallel scan.