Este tópico descreve como executar consultas aninhadas para consultar dados nas linhas filhas de colunas aninhadas. Use a operação NestedQuery para encapsular uma coluna aninhada antes de consultá-la. Ao chamar a operação NestedQuery, especifique uma subconsulta de qualquer tipo e o caminho da coluna aninhada.
Pré-requisitos
Uma instância do OTSClient está inicializada. Para mais informações, consulte Initialize an OTSClient instance.
Uma tabela de dados foi criada e contém dados gravados. Para saber mais, consulte Create data tables e Write data.
Um índice de pesquisa foi criado para a tabela de dados. Para obter mais detalhes, consulte Create search indexes.
Parâmetros
|
Parâmetro |
Descrição |
|
Path |
O caminho da coluna aninhada, semelhante a uma estrutura de árvore. Por exemplo, news.title indica a subcoluna title na coluna news do tipo aninhado. |
|
Query |
A consulta na subcoluna da coluna aninhada. Pode ser de qualquer tipo de consulta. |
|
ScoreMode |
Especifica o valor usado para calcular a pontuação quando a coluna contém múltiplos valores. |
|
TableName |
O nome da tabela de dados. |
|
IndexName |
O nome do índice de pesquisa. |
|
ColumnsToGet |
Define se todas as colunas das linhas que atendem às condições da consulta serão retornadas. Especifique os parâmetros ReturnAll, Columns e ReturnAllFromIndex. Por padrão,
Defina |
Exemplo
O código de exemplo a seguir mostra como consultar as linhas em que o valor da subcoluna nested_1 na coluna col_nested é "tablestore". Todas as colunas do índice de pesquisa são retornadas.
/// <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.
}
FAQ
Referências
-
Ao usar um índice de pesquisa para consultar dados, utilize os seguintes 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 e exists query. Use diferentes métodos de consulta para buscar dados em várias dimensões de acordo com os requisitos do seu negócio.
Ordene ou pagine as linhas que atendem às condições da consulta usando os recursos de classificação e paginação. Para mais informações, consulte Sorting and paging.
Use o recurso de colapso (distinct) para agrupar o conjunto de resultados com base em uma coluna específica. Assim, os dados do tipo especificado aparecem apenas uma vez nos resultados da consulta. Para saber mais, consulte Collapse (distinct).
Para analisar dados em uma tabela de dados, use o recurso de agregação da operação Search ou execute instruções SQL. Por exemplo, obtenha os valores mínimo e máximo, a soma e o total de linhas. Para obter mais detalhes, consulte Aggregation e SQL query.
Para obter todas as linhas que atendem às condições da consulta sem precisar ordená-las, chame as operações ParallelScan e ComputeSplits para usar o recurso de varredura paralela. Para obter mais informações, consulte Parallel scan.