Consiglio vivamente di aggiornare la vostra versione elasticsearch se possibile, ci sono stati cambiamenti significativi dal 0.9.x.
Questa domanda non è abbastanza specifica, poiché ci sono molti modi in cui ElasticSearch può soddisfare questa funzionalità e differiscono leggermente sul tuo obiettivo generale. Se stai cercando di replicare esattamente quella query SQL, in questo caso usa la query con caratteri jolly o la query prefisso.
Utilizzando una query wildcard:
Nota: Fare attenzione con ricerche con caratteri jolly, sono lenti. Evita l'uso di caratteri jolly all'inizio delle stringhe.
GET /my_index/table_name/_search
{
"query": {
"wildcard": {
"field_name": "a*"
}
}
}
O Prefix query
GET /my_index/table_name/_search
{
"query": {
"prefix": {
"field_name": "a"
}
}
}
O partial matching:
Nota: NON usare ciecamente corrispondenza parziale, mentre ci sono casi d'angolo per il suo utilizzo, corretto utilizzo di analizzatori è quasi sempre meglio.
Anche questa query esatta sarà equivalente a LIKE '%a%'
, che, ancora una volta, potrebbe essere la configurazione migliore con l'uso corretto del mapping e una ricerca di query normale!
GET /my_index/table_name/_search
{
"query": {
"match_phrase": {
"field_name": "a"
}
}
}
Se stai leggendo questo chiedendo circa l'interrogazione ES simile per la ricerca-as-you-type Vorrei suggerire la lettura su edge-ngrams, che si riferiscono ad un uso corretto della cartografia a seconda di ciò che si sta tentando di fare =)
fonte
2015-07-02 05:36:57
0.90.7 è una versione molto vecchia di ES. Suggerisco di usare l'ultima versione. –
Inoltre, leggere la [documentazione] (https://www.elastic.co/guide/en/elasticsearch/guide/current/partial-matching.html)! Copre molti casi d'uso e offre varie soluzioni per ciò che ti serve. –