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.
Tópicos
- URIpesquisas
- Pesquisas de corpo da solicitação
- Paginação de resultados da pesquisa
- Dashboards Query Language
- Pacotes personalizados para Amazon OpenSearch Service
- Consultando seus dados do Amazon OpenSearch Service com SQL
- Pesquisa de K-Nearest Neighbor (k-NN) no Amazon Service OpenSearch
- Pesquisa entre clusters no Amazon Service OpenSearch
- Aprendendo a se classificar no Amazon OpenSearch Service
- Pesquisa assíncrona no Amazon Service OpenSearch
- Pesquisa pontual no Amazon OpenSearch Service
- Pesquisa semântica no Amazon Service OpenSearch
- Pesquisa simultânea de segmentos no Amazon Service OpenSearch
- Geração de consultas em linguagem natural com OpenSearch
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
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 _search
API. 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
Dashboards Query Language
Você pode usar a Linguagem de Consulta de Painéis (DQL)
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}