Execute uma consulta aninhada para consultar dados nas linhas filhas de campos aninhados. Campos aninhados não podem ser consultados diretamente. Para consultar um campo aninhado, especifique o caminho do campo e uma subconsulta em um objeto NestedQuery. A subconsulta pode ser de qualquer tipo.
Pré-requisitos
Uma instância OTSClient foi inicializada. Para obter mais informações, consulte Initialize an OTSClient instance.
Uma tabela de dados foi criada e contém dados gravados. Para obter mais informações, consulte Create a data table e Write data.
Um índice de pesquisa foi criado para a tabela de dados. Para obter mais informações, consulte Create a search index.
Parâmetros
|
Parâmetro |
Descrição |
|
table_name |
Nome da tabela de dados. |
|
index_name |
Nome do índice de pesquisa. |
|
path |
Caminho do campo aninhado. O campo aninhado utiliza uma estrutura em árvore. Por exemplo, news.title indica o subcampo title dentro do campo aninhado news. |
|
query |
Consulta sobre o subcampo dentro do campo aninhado. A consulta pode ser de qualquer tipo. |
|
score_mode |
Valor utilizado para calcular a pontuação quando um campo contém múltiplos valores. |
Exemplos
O código de exemplo a seguir demonstra como consultar as linhas em que o valor da coluna nested.nested_keyword é '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);
FAQ
Referências
-
Ao utilizar um índice de pesquisa para consultar dados, você pode usar 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. Combine diferentes métodos para consultar dados em múltiplas dimensões de acordo com suas necessidades de negócio.
Para ordenar ou paginar as linhas que atendem às condições da consulta, utilize o recurso de ordenação e paginação. Para obter mais informações, consulte Sorting and paging.
Para agrupar o conjunto de resultados com base em uma coluna específica, utilize o recurso de colapso (distinct). Dessa forma, dados do tipo especificado aparecem apenas uma vez nos resultados da consulta. Para obter mais informações, consulte Collapse (distinct).
Para analisar dados em uma tabela — como obter valores extremos, soma e número total de linhas — execute operações de agregação ou instruções SQL. Para obter mais informações, consulte Aggregation e SQL query.
Para obter rapidamente todas as linhas que atendem às condições da consulta sem necessidade de ordenação, chame as operações ParallelScan e ComputeSplits para utilizar o recurso de varredura paralela. Para obter mais informações, consulte Parallel scan.