Una consulta de existencia también se conoce como consulta NULL o consulta de valor NULL. Se utiliza en datos dispersos para determinar si existe una columna específica en una fila. Por ejemplo, puede consultar las filas donde el valor de la columna address no esté vacío.
Si necesita comprobar si una columna contiene valores vacíos, debe usar ExistsQuery junto con must_not_queries de BoolQuery.
-
El sistema considera que una columna no existe cuando se cumple alguna de las siguientes condiciones. En este ejemplo se utiliza la columna city.
El tipo de la columna city en el índice de búsqueda es un tipo básico, como keyword. Si una fila de la tabla de datos no incluye la columna city, el índice de búsqueda asume que dicha columna no existe.
El tipo de la columna city en el índice de búsqueda es un tipo básico, como keyword. Si en la tabla de datos el valor de la columna city es un arreglo vacío ("city" = "[]"), el índice de búsqueda asume que la columna no existe.
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 registros en ella. Para obtener 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 obtener más información, consulte Create a search index.
Parámetros
|
Parámetro |
Descripción |
|
table_name |
Nombre de la tabla de datos. |
|
index_name |
Nombre del índice de búsqueda. |
|
field_name |
Nombre de la columna que desea consultar. |
|
query_type |
Tipo de consulta. Establezca este parámetro en QueryTypeConst::EXISTS_QUERY. Nota
No es posible consultar columnas anidadas de forma directa. Para hacerlo, debe encapsular NestedQuery y especificar la ruta de la columna anidada junto con una subconsulta. La subconsulta admite cualquier tipo de consulta. Para obtener más información, consulte Nested query. |
Ejemplos
A continuación se muestran ejemplos sobre cómo ejecutar una consulta de existencia.
Consultar filas no vacías en la columna text
El siguiente código de ejemplo muestra cómo consultar las filas donde la columna text de una tabla no está vacía.
$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::EXISTS_QUERY,
'query' => array(
'field_name' => 'text'
)
)
),
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
'return_names' => array('keyword', 'long', 'array')
)
);
$response = $otsClient->search($request);
Consultar filas no vacías en una subcolumna de una columna anidada
El siguiente código de ejemplo muestra cómo consultar las filas donde la subcolumna nested_long de una columna anidada no está vacía.
$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,
'query' => array(
'path' => "nested",
'query' => array(
'query_type' => QueryTypeConst::EXISTS_QUERY,
'query' => array(
'field_name' => 'nested.nested_long',
)
),
'score_mode' => ScoreModeConst::SCORE_MODE_AVG
)
)
),
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_SPECIFIED,
'return_names' => array('nested')
)
);
$response = $this->otsClient->search($request);
Preguntas frecuentes
Referencias
-
Al consultar datos mediante un índice de búsqueda, puede utilizar los siguientes métodos: 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 buscar información desde varias dimensiones según sus necesidades de negocio.
Si necesita ordenar o paginar las filas que cumplen con los criterios de búsqueda, utilice la función de ordenamiento y paginación. Para obtener más información, consulte Sorting and paging.
Para agrupar el conjunto de resultados con base en una columna específica, utilice la función collapse (distinct). De esta manera, los datos del tipo indicado aparecerán una sola vez en los resultados de la consulta. Para obtener más información, consulte Collapse (distinct).
Si requiere analizar los datos de una tabla, por ejemplo, para obtener valores extremos, sumas o el número total de filas, ejecute operaciones de agregación o sentencias SQL. Para obtener más información, consulte Aggregation y SQL query.
Cuando necesite recuperar rápidamente todas las filas que cumplen con los criterios de búsqueda sin ordenarlas, llame a las operaciones ParallelScan y ComputeSplits para aprovechar la función de escaneo paralelo. Para obtener más información, consulte Parallel scan.