Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Ricerca di dati in Amazon OpenSearch Service
Esistono diversi metodi comuni per la ricerca di documenti in Amazon OpenSearch Service, tra cui URI ricerche e ricerche nel corpo delle richieste. OpenSearch Il servizio offre funzionalità aggiuntive che migliorano l'esperienza di ricerca, come pacchetti personalizzati, SQL supporto e ricerca asincrona. Per un API riferimento completo OpenSearch alla ricerca, consulta la documentazione. OpenSearch
Nota
Le seguenti richieste di esempio funzionano con OpenSearch APIs. Alcune richieste potrebbero non funzionare con versioni precedenti di Elasticsearch.
Argomenti
- URIricerche
- Ricerche nel corpo della richiesta
- Paginazione dei risultati della ricerca
- Linguaggio query dashboard
- Pacchetti personalizzati per Amazon OpenSearch Service
- Interrogazione dei dati OpenSearch di Amazon Service con SQL
- Ricerca K-Nearest Neighbor (k-NN) su Amazon Service OpenSearch
- Ricerca tra cluster in Amazon Service OpenSearch
- Imparare a classificarsi per Amazon OpenSearch Service
- Ricerca asincrona in Amazon Service OpenSearch
- Ricerca puntuale in Amazon OpenSearch Service
- Ricerca semantica in Amazon Service OpenSearch
- Ricerca simultanea di segmenti in Amazon Service OpenSearch
- Generazione di query in linguaggio naturale con OpenSearch
URIricerche
Le ricerche Universal Resource Identifier (URI) sono la forma di ricerca più semplice. In una URI ricerca, si specifica la query come parametro di HTTP richiesta:
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/_search?q=house
L'aspetto di una risposta di esempio è simile al seguente:
{
"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"
}
},
...
]
}
}
Per impostazione predefinita, questa query ricerca il termine house in tutti i campi di tutti gli indici. Per restringere la ricerca, specificate un indice (movies
) e un campo del documento (title
) inURI:
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search?q=title:house
È possibile includere parametri aggiuntivi nella richiesta, ma i parametri supportati forniscono solo un piccolo sottoinsieme delle opzioni di OpenSearch ricerca. La seguente richiesta restituisce 20 risultati (anziché il numero predefinito di 10) ordinati per anno (anziché per _score
):
GET https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_search?q=title:house&size=20&sort=year:desc
Ricerche nel corpo della richiesta
Per eseguire ricerche più complesse, utilizzate il corpo della HTTP richiesta e il linguaggio OpenSearch specifico del dominio () per le query. DSL La query DSL consente di specificare l'intera gamma di opzioni di ricerca. OpenSearch
Nota
Non è possibile includere caratteri speciali Unicode nel valore di un campo di testo, altrimenti il valore verrà analizzato come valori multipli separati dal carattere speciale. Questa analisi errata può portare a un filtraggio involontario dei documenti e persino compromettere il controllo sul loro accesso. Per ulteriori informazioni, vedere Una nota sui caratteri speciali Unicode nei campi di testo
La seguente match
query è simile all'esempio di URIricerca finale:
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
Le ricerche _search
API nel corpo della richiesta Accept HTTP GET
e POST
for Request, ma non tutti HTTP i client supportano l'aggiunta di un corpo di richiesta a una GET
richiesta. POST
è la scelta più universale.
In molti casi, potrebbe essere necessario eseguire la ricerca in diversi campi, ma non in tutti. Utilizza la query 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"] } } }
Campi di boosting
Puoi migliorare la rilevanza della ricerca "potenziando" alcuni campi. I boost sono moltiplicatori che valutano le corrispondenze in un campo più pesantemente rispetto alle corrispondenze in altri campi. Nel seguente esempio, una corrispondenza per john nel campo title
influenza _score
il doppio di una corrispondenza nel campo plot
e quattro volte di più di una corrispondenza nei campi actors
o directors
. Ne risulta che film come John Wick e John Carter sono vicini alla parte alta dei risultati della ricerca e film con protagonista John Travolta sono nella parte bassa.
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"] } } }
Evidenziazione dei risultati della ricerca
L'highlight
opzione indica OpenSearch di restituire un oggetto aggiuntivo all'interno dell'hits
array se la query corrisponde a uno o più campi:
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 la query corrisponde al contenuto del campo plot
, l'aspetto di un'occorrenza è simile al seguente:
{
"_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>."
]
}
}
Per impostazione predefinita, OpenSearch racchiude la stringa corrispondente nei <em>
tag, fornisce fino a 100 caratteri di contesto attorno alla corrispondenza e suddivide il contenuto in frasi identificando segni di punteggiatura, spazi, tabulazioni e interruzioni di riga. Tutte queste impostazioni sono personalizzabili:
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": ".,!? " } }
Conta API
Se non sei interessato al contenuto dei tuoi documenti e desideri solo conoscere il numero di corrispondenze, puoi utilizzare il _count
API invece di _search
API. La seguente richiesta utilizza la query query_string
per identificare commedie romantiche:
POST https://search-
my-domain
.us-west-1.
es.amazonaws.com/movies/_count { "query": { "query_string": { "default_field": "genres", "query": "romance AND comedy" } } }
L'aspetto di una risposta di esempio è simile al seguente:
{
"count": 564,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
}
}
Paginazione dei risultati della ricerca
Se devi visualizzare un gran numero di risultati di ricerca, puoi implementare l'impaginazione utilizzando diversi metodi.
Punto nel tempo
La funzionalità point in time (PIT) è un tipo di ricerca che consente di eseguire diverse query su un set di dati fisso nel tempo. Questo è il metodo di impaginazione preferito in OpenSearch, specialmente per l'impaginazione profonda. È possibile utilizzarlo PIT con la versione 2.5 e successive del OpenSearch servizio. Per ulteriori informazioni su PIT, consultare Ricerca puntuale in Amazon OpenSearch Service.
I size
parametri from
e
Il modo più semplice per impaginare è con i size
parametri from
and. La richiesta seguente restituisce i risultati 20-39 dell'elenco indicizzato su zero dei risultati della ricerca:
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"] } } }
Per ulteriori informazioni sull'impaginazione della ricerca, consulta Impaginare i risultati nella documentazione
Linguaggio query dashboard
Puoi utilizzare Dashboards Query Language (DQL)
Query di termine
Una query di termini richiede di specificare il termine che si sta cercando.
Per eseguire una query di termini, inserisci quanto segue:
host:www.example.com
Query booleano
Puoi utilizzare gli operatori booleani AND
, or
e not
per combinare più query.
Per eseguire una query booleana, incollare quanto segue:
host.keyword:www.example.com and response.keyword:200
Query di data e intervallo
È possibile utilizzare una query di data e intervallo per trovare una data prima o dopo la query.
-
>
indica una ricerca di una data successiva alla data specificata. -
<
indica una ricerca di una data precedente alla data specificata.
@timestamp > "2020-12-14T09:35:33"
Query di campi nidificati
Se hai un documento con campi nidificati, devi specificare quali parti del documento desideri recuperare. Di seguito è riportato un documento di esempio che contiene campi nidificati:
{"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" } ] }
Per recuperare un campo specifico utilizzandoDQL, incolla quanto segue:
NBA players: {player-name: Lebron James}
Per recuperare più oggetti dal documento nidificato, incollare quanto segue:
NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo}
Per eseguire una ricerca all'interno di un intervallo, incolla quanto segue:
NBA players: {player-name: Lebron James} and NBA players: {player-name: Giannis Antetokounmpo and < 30}
Se il documento ha un oggetto nidificato all'interno di un altro oggetto, è comunque possibile recuperare i dati specificando tutti i livelli. A tale scopo, copia quanto segue:
Top-Power-forwards.NBA players: {player-name:Lebron James}