

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
<a name="searching"></a>

Há vários métodos comuns para pesquisar documentos no Amazon OpenSearch Service, incluindo pesquisas de URI e pesquisas de corpos de solicitações. OpenSearch O serviço oferece funcionalidades adicionais que melhoram a experiência de pesquisa, como pacotes personalizados, suporte a SQL e pesquisa assíncrona. Para obter uma referência abrangente da API de OpenSearch pesquisa, consulte a [OpenSearchdocumentação](https://docs.opensearch.org/latest/opensearch/query-dsl/full-text/).

**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.

**Topics**
+ [Pesquisas de URI](#searching-uri)
+ [Pesquisas de corpo da solicitação](#searching-dsl)
+ [Paginação de resultados da pesquisa](#searching-paginating)
+ [Dashboards Query Language](#DashboardsQueryLanguages)
+ [Importação e gerenciamento de pacotes no Amazon Service OpenSearch](custom-packages.md)
+ [Consultando seus dados do Amazon OpenSearch Service com SQL](sql-support.md)
+ [Pesquisa entre clusters no Amazon Service OpenSearch](cross-cluster-search.md)
+ [Aprendendo a se classificar no Amazon OpenSearch Service](learning-to-rank.md)
+ [Pesquisa assíncrona no Amazon Service OpenSearch](asynchronous-search.md)
+ [Pesquisa pontual no Amazon OpenSearch Service](pit.md)
+ [Pesquisa de agentes no Amazon Service OpenSearch](agentic-search.md)
+ [Pesquisa semântica no Amazon Service OpenSearch](semantic-search.md)
+ [Pesquisa simultânea de segmentos no Amazon Service OpenSearch](concurrent-segment-search.md)
+ [Geração de consultas em linguagem natural no Amazon OpenSearch Service](natural-language-query.md)

## Pesquisas de URI
<a name="searching-uri"></a>

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

```
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`) no URI:

```
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
<a name="searching-dsl"></a>

Para realizar pesquisas mais complexas, use o corpo de solicitação HTTP e o idioma específico do domínio (DSL) do OpenSearch para consultas. A consulta DSL permite especificar o intervalo completo de opções de pesquisa do OpenSearch .

**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](https://opensearch.org/docs/latest/opensearch/query-dsl/index/#a-note-on-unicode-special-characters-in-text-fields) na OpenSearch documentação.

A consulta `match` a seguir é semelhante ao exemplo de [pesquisa final do URI](#searching-uri):

```
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**  
A API `_search` aceita HTTP`GET` e `POST` para pesquisas de corpo de solicitação, mas nem todos os clientes HTTP suportam a adição de um corpo de solicitação a uma solicitação `GET`. `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
<a name="searching-dsl-boost"></a>

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 a *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 name="searching-dsl-highlighting"></a>

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": ".,!? "
  }
}
```

### API de contagem
<a name="searching-dsl-count"></a>

Se você não estiver interessado no conteúdo de seus documentos e quiser apenas saber o número de correspondências, poderá usar a API `_count` em vez da API `_search`. 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
<a name="searching-paginating"></a>

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
<a name="pag-pit"></a>

O atributo point in time (PIT – um ponto no tempo) é 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 o PIT com a versão 2.5 e posterior do OpenSearch Service. Para ter mais informações sobre o PIT, consulte [Pesquisa pontual no Amazon OpenSearch Service](pit.md).

### Os parâmetros `from` e `size`.
<a name="pag-from-size"></a>

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](https://opensearch.org/docs/latest/opensearch/search/paginate/). OpenSearch 

## Dashboards Query Language
<a name="DashboardsQueryLanguages"></a>

Você pode usar a [Dashboards Query Language (DQL)](https://opensearch.org/docs/latest/dashboards/dql/#terms-query) para pesquisar dados e visualizações em painéis. OpenSearch A DQL usa quatro tipos de consulta principais:*termos*, *boleana*, *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 usando DQL, 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}
```