Ricerca di dati in Amazon OpenSearch Service - OpenSearch Servizio Amazon

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.

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 nella OpenSearch documentazione.

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'highlightopzione indica OpenSearch di restituire un oggetto aggiuntivo all'interno dell'hitsarray 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 _searchAPI. 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. OpenSearch

Linguaggio query dashboard

Puoi utilizzare Dashboards Query Language (DQL) per cercare dati e visualizzazioni nelle dashboard. OpenSearch DQLutilizza quattro tipi di query principali: terms, booleano, data e intervallo e campo annidato.

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}