Pesquisando dados no Amazon OpenSearch Service - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Pesquisando dados no Amazon OpenSearch Service

Há vários métodos comuns para pesquisar documentos no Amazon OpenSearch Service, incluindo URI pesquisas e buscas no corpo da solicitação. OpenSearch O serviço oferece funcionalidades adicionais que melhoram a experiência de pesquisa, como pacotes personalizados, SQL suporte e pesquisa assíncrona. Para obter uma API referência OpenSearch de pesquisa abrangente, consulte a OpenSearch documentação.

nota

Os exemplos de solicitações a seguir funcionam com OpenSearch APIs. Algumas solicitações podem não funcionar com versões mais antigas do Elasticsearch.

URIpesquisas

As pesquisas do Universal Resource Identifier (URI) são a forma mais simples de pesquisa. Em uma URI pesquisa, você especifica a consulta como um parâmetro de HTTP solicitação:

GET https://search-my-domain.us-west-1.es.amazonaws.com/_search?q=house

Uma resposta de exemplo pode ser a seguinte:

{ "took": 25, "timed_out": false, "_shards": { "total": 10, "successful": 10, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 85, "relation": "eq", }, "max_score": 6.6137657, "hits": [ { "_index": "movies", "_type": "movie", "_id": "tt0077975", "_score": 6.6137657, "_source": { "directors": [ "John Landis" ], "release_date": "1978-07-27T00:00:00Z", "rating": 7.5, "genres": [ "Comedy", "Romance" ], "image_url": "http://ia.media-imdb.com/images/M/MV5BMTY2OTQxNTc1OF5BMl5BanBnXkFtZTYwNjA3NjI5._V1_SX400_.jpg", "plot": "At a 1962 College, Dean Vernon Wormer is determined to expel the entire Delta Tau Chi Fraternity, but those troublemakers have other plans for him.", "title": "Animal House", "rank": 527, "running_time_secs": 6540, "actors": [ "John Belushi", "Karen Allen", "Tom Hulce" ], "year": 1978, "id": "tt0077975" } }, ... ] } }

Por padrão, essa consulta pesquisa todos os campos de todos os índices do termo casa. Para restringir a pesquisa, especifique um índice (movies) e um campo de documento (title) noURI:

GET https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search?q=title:house

Você pode incluir parâmetros adicionais na solicitação, mas os parâmetros compatíveis fornecem apenas um pequeno subconjunto das opções de OpenSearch pesquisa. A solicitação a seguir retorna 20 resultados (em vez do padrão de 10) e classifica por ano (em vez de por _score):

GET https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search?q=title:house&size=20&sort=year:desc

Pesquisas de corpo da solicitação

Para realizar pesquisas mais complexas, use o corpo da HTTP solicitação e a linguagem OpenSearch específica do domínio (DSL) para consultas. A consulta DSL permite que você especifique toda a gama de opções de OpenSearch pesquisa.

nota

Você não pode incluir caracteres especiais Unicode em um valor de campo de texto, ou o valor será analisado como vários valores separados pelo caractere especial. Essa análise incorreta pode levar à filtragem não intencional de documentos e potencialmente comprometer o controle sobre seu acesso. Para obter mais informações, consulte Uma nota sobre caracteres especiais Unicode em campos de texto na OpenSearch documentação.

A match consulta a seguir é semelhante ao exemplo de URIpesquisa final:

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "sort": { "year": { "order": "desc" } }, "query": { "query_string": { "default_field": "title", "query": "house" } } }
nota

O corpo da solicitação _search API aceita HTTP GET e POST para pesquisas, mas nem todos os HTTP clientes oferecem suporte à adição de um corpo de solicitação a uma GET solicitação. POSTé a escolha mais universal.

Em muitos casos, você pode pesquisar vários campos, mas não todos os campos. Use a consulta multi_match:

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title", "plot", "actors", "directors"] } } }

Impulsão de campos

Você pode melhorar a relevância de pesquisa "aumentando" determinados campos. Boosts são multiplicadores que ponderam os resultados em um campo maior do que os correspondentes em outros campos. No exemplo a seguir, uma correspondência para john no campo title influencia _score duas vezes mais que uma correspondência no campo plot e quatro vezes mais que uma correspondência nos campos actors ou directors. O resultado é que filmes como John Wick e John Carter estão próximos do topo dos resultados de busca, e filmes estrelados por John Travolta estão quase no fim.

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "john", "fields": ["title^4", "plot^2", "actors", "directors"] } } }

Destaques de resultados da pesquisa

A highlight opção diz OpenSearch para retornar um objeto adicional dentro da hits matriz se a consulta corresponder a um ou mais campos:

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} } } }

Se a consulta corresponder ao conteúdo do campo plot, um resultado pode ser semelhante ao seguinte:

{ "_index": "movies", "_type": "movie", "_id": "tt0091541", "_score": 11.276199, "_source": { "directors": [ "Richard Benjamin" ], "release_date": "1986-03-26T00:00:00Z", "rating": 6, "genres": [ "Comedy", "Music" ], "image_url": "http://ia.media-imdb.com/images/M/MV5BMTIzODEzODE2OF5BMl5BanBnXkFtZTcwNjQ3ODcyMQ@@._V1_SX400_.jpg", "plot": "A young couple struggles to repair a hopelessly dilapidated house.", "title": "The Money Pit", "rank": 4095, "running_time_secs": 5460, "actors": [ "Tom Hanks", "Shelley Long", "Alexander Godunov" ], "year": 1986, "id": "tt0091541" }, "highlight": { "plot": [ "A young couple struggles to repair a hopelessly dilapidated <em>house</em>." ] } }

Por padrão, OpenSearch divide a string correspondente em <em> tags, fornece até 100 caracteres de contexto em torno da correspondência e divide o conteúdo em frases identificando sinais de pontuação, espaços, tabulações e quebras de linha. Todas estas configurações são personalizáveis:

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } }, "highlight": { "fields": { "plot": {} }, "pre_tags": "<strong>", "post_tags": "</strong>", "fragment_size": 200, "boundary_chars": ".,!? " } }

Contagem API

Se você não estiver interessado no conteúdo de seus documentos e quiser apenas saber o número de correspondências, você pode usar o _count API em vez do _searchAPI. A solicitação a seguir usa a consulta query_string para identificar comédias românticas:

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_count { "query": { "query_string": { "default_field": "genres", "query": "romance AND comedy" } } }

Uma resposta de exemplo pode ser a seguinte:

{ "count": 564, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 } }

Paginação de resultados da pesquisa

Se precisar exibir um grande número de resultados de pesquisa, você poderá implementar a paginação usando vários métodos diferentes.

Ponto de tempo

O recurso point in time (PIT) é um tipo de pesquisa que permite executar consultas diferentes em um conjunto de dados fixo no tempo. Esse é o método de paginação preferido em OpenSearch, especialmente para paginação profunda. Você pode usar PIT com a versão 2.5 e posterior do OpenSearch Service. Para obter mais informações sobre o PIT, consulte Pesquisa pontual no Amazon OpenSearch Service.

Os parâmetros from e size.

A maneira mais simples de paginar é com os parâmetros from e size. A seguinte solicitação retorna resultados de 20 a 39 da lista indexada zero de resultados da pesquisa:

POST https://search-my-domain.us-west-1.es.amazonaws.com/movies/_search { "from": 20, "size": 20, "query": { "multi_match": { "query": "house", "fields": ["title^4", "plot^2", "actors", "directors"] } } }

Para obter mais informações sobre paginação de pesquisa, consulte Resultados de paginação na documentação. OpenSearch

Dashboards Query Language

Você pode usar a Linguagem de Consulta de Painéis (DQL) para pesquisar dados e visualizações em OpenSearch Painéis. DQLusa quatro tipos de consulta principais: termos, booleanos, data e intervalo e campo aninhado.

Consulta de termos

Uma consulta de termos exige que você especifique o termo que está procurando.

Para executar uma consulta de termos, insira o seguinte:

host:www.example.com

Consulta booleana

É possível usar os operadores booleanos AND, or e not para combinar várias consultas.

Para executar uma consulta booleana, cole o seguinte:

host.keyword:www.example.com and response.keyword:200

Consulta de data e intervalo

Você pode usar uma consulta de data e intervalo para encontrar uma data antes ou depois da consulta.

  • > indica uma pesquisa por uma data posterior à data especificada.

  • < indica uma pesquisa por uma data anterior à data especificada.

@timestamp > "2020-12-14T09:35:33"

Consulta de campo aninhado

Se você tiver um documento com campos aninhados, será necessário especificar quais partes do documento você deseja recuperar. Veja a seguir um exemplo de documento que contém campos aninhados:

{"NBA players":[ {"player-name": "Lebron James", "player-position": "Power forward", "points-per-game": "30.3" }, {"player-name": "Kevin Durant", "player-position": "Power forward", "points-per-game": "27.1" }, {"player-name": "Anthony Davis", "player-position": "Power forward", "points-per-game": "23.2" }, {"player-name": "Giannis Antetokounmpo", "player-position": "Power forward", "points-per-game":"29.9" } ] }

Para recuperar um campo específico usandoDQL, cole o seguinte:

NBA players: {player-name: Lebron James}

Para recuperar vários objetos do documento aninhado, cole o seguinte:

NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo}

Para pesquisar em um intervalo, cole o seguinte:

NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo and < 30}

Se o documento tiver um objeto aninhado em outro objeto, você ainda poderá recuperar dados especificando todos os níveis. Para fazer isso, cole o seguinte:

Top-Power-forwards.NBA players: {player-name:Lebron James}