Este tópico descreve como executar consultas aninhadas para consultar dados nas linhas filhas de colunas aninhadas. Utilize a operação NestedQuery para encapsular a 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
Instância OTSClient inicializada. Para mais informações, consulte Inicializar uma instância OTSClient.
Tabela de dados criada e preenchida. Para mais informações, consulte Criar tabelas de dados e Gravar dados.
Índice de pesquisa criado para a tabela de dados. Para mais informações, consulte Criar índices de pesquisa.
Parâmetros
|
Parâmetro |
Descrição |
|
Path |
Caminho da coluna aninhada. O caminho segue uma estrutura semelhante a uma árvore. Por exemplo, news.title indica a subcoluna title dentro da coluna news do tipo aninhado. |
|
Query |
Consulta aplicada à subcoluna dentro da coluna aninhada. A consulta pode ser de qualquer tipo. |
|
ScoreMode |
Defina qual valor utilizar para calcular a pontuação quando a coluna contém múltiplos valores. |
|
TableName |
Nome da tabela de dados. |
|
IndexName |
Nome do índice de pesquisa. |
|
ColumnsToGet |
Determina se todas as colunas das linhas que atendem às condições da consulta devem ser retornadas. Configure os parâmetros ReturnAll, Columns e ReturnAllFromIndex conforme necessário. Por padrão,
Defina |
Exemplo
O código de exemplo a seguir demonstra como consultar linhas em que o valor da subcoluna nested_1, dentro da coluna col_nested, seja "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.
}
Perguntas frequentes
Referências
-
Ao utilizar um índice de pesquisa para consultar dados, empregue os seguintes métodos: consulta de termo, consulta de termos, consulta match all, consulta match, consulta match phrase, consulta de prefixo, consulta de intervalo, consulta com curinga, consulta booleana, consulta geográfica, consulta aninhada e consulta exists. Utilize diferentes métodos para consultar dados sob múltiplas dimensões, conforme as necessidades do seu negócio.
Ordene ou pagine as linhas que atendem às condições da consulta utilizando os recursos de ordenação e paginação. Para mais informações, consulte Ordenação e paginação.
Utilize o recurso de colapso (distinto) para agrupar o conjunto de resultados com base em uma coluna específica. Dessa forma, dados do tipo especificado aparecem apenas uma vez nos resultados da consulta. Para mais informações, consulte Colapso (distinto).
Para analisar dados em uma tabela de dados, utilize o recurso de agregação da operação Search ou execute instruções SQL. É possível obter valores mínimos e máximos, somas e o número total de linhas, por exemplo. Para mais informações, consulte Agregação e Consulta SQL.
Caso precise obter todas as linhas que atendem às condições da consulta sem a necessidade de ordená-las, chame as operações ParallelScan e ComputeSplits para utilizar o recurso de varredura paralela. Para mais informações, consulte Varredura paralela.