Elasticsearch: API di ricerca
Questa API viene utilizzata per cercare contenuti in Elasticsearch. Un utente può eseguire la ricerca inviando una richiesta get con stringa di query come parametro oppure può pubblicare una query nel corpo del messaggio della richiesta di post. Principalmente tutte le API di ricerca sono multi-indice, multi-tipo.
Multi-indice
Elasticsearch ci permette di ricercare i documenti presenti in tutti gli indici o in alcuni indici specifici. Ad esempio, se dobbiamo cercare tutti i documenti con un nome che contiene centrale, possiamo fare come mostrato qui -
GET /_all/_search?q=city:paprola
Eseguendo il codice sopra, otteniamo la seguente risposta:
{
"took" : 33,
"timed_out" : false,
"_shards" : {
"total" : 7,
"successful" : 7,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.9808292,
"hits" : [
{
"_index" : "schools",
"_type" : "school",
"_id" : "5",
"_score" : 0.9808292,
"_source" : {
"name" : "Central School",
"description" : "CBSE Affiliation",
"street" : "Nagan",
"city" : "paprola",
"state" : "HP",
"zip" : "176115",
"location" : [
31.8955385,
76.8380405
],
"fees" : 2200,
"tags" : [
"Senior Secondary",
"beautiful campus"
],
"rating" : "3.3"
}
}
]
}
}
Ricerca URI
Molti parametri possono essere passati in un'operazione di ricerca utilizzando Uniform Resource Identifier -
S.No | Parametro e descrizione |
---|---|
1 | Q Questo parametro viene utilizzato per specificare la stringa di query. |
2 | lenient Questo parametro viene utilizzato per specificare la stringa di query. Gli errori basati sul formato possono essere ignorati semplicemente impostando questo parametro su true. È falso per impostazione predefinita. |
3 | fields Questo parametro viene utilizzato per specificare la stringa di query. |
4 | sort Possiamo ottenere risultati ordinati utilizzando questo parametro, i possibili valori per questo parametro sono fieldName, fieldName: asc / fieldname: desc |
5 | timeout Possiamo limitare il tempo di ricerca utilizzando questo parametro e la risposta contiene solo gli hit in quel tempo specificato. Per impostazione predefinita, non è previsto alcun timeout. |
6 | terminate_after Possiamo limitare la risposta a un numero specificato di documenti per ogni frammento, al raggiungimento del quale la query terminerà in anticipo. Per impostazione predefinita, non è presente alcun terminate_after. |
7 | from L'inizio dall'indice dei risultati da restituire. Il valore predefinito è 0. |
8 | size Denota il numero di risultati da restituire. Il valore predefinito è 10. |
Richiedi ricerca del corpo
Possiamo anche specificare la query utilizzando query DSL nel corpo della richiesta e ci sono molti esempi già forniti nei capitoli precedenti. Uno di questi esempi è fornito qui:
POST /schools/_search
{
"query":{
"query_string":{
"query":"up"
}
}
}
Eseguendo il codice sopra, otteniamo la seguente risposta:
{
"took" : 11,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.47000363,
"hits" : [
{
"_index" : "schools",
"_type" : "school",
"_id" : "4",
"_score" : 0.47000363,
"_source" : {
"name" : "City Best School",
"description" : "ICSE",
"street" : "West End",
"city" : "Meerut",
"state" : "UP",
"zip" : "250002",
"location" : [
28.9926174,
77.692485
],
"fees" : 3500,
"tags" : [
"fully computerized"
],
"rating" : "4.5"
}
}
]
}
}