Non vedo alcun motivo per utilizzare ElasticSearch in combinazione con MongoDb, è sufficiente utilizzare ElasticSearch come archivio di documenti separato per i documenti, che devono essere cercati. E sì, puoi anche db intero. Ovviamente dipende dal modello di dominio e da altri fattori.
Se non hai bisogno di derivazione, ricerca fuzzy, ricerca complicata con caratteri jolly, puoi eseguire ricerche con mongoDb. Quando viene inserito un nuovo documento, suddividerlo in parole in lettere minuscole e aggiungere all'array "parole", ad esempio. Successivamente è possibile eseguire una richiesta di ricerca su questo array con regex
. Non è possibile utilizzare l'opzione I
(ignora maiuscole/minuscole) in questa espressione regolare ed è possibile cercare solo il carattere jolly LIKE%
(o senza carattere jolly), altrimenti la ricerca non utilizzerà l'indice mongoDb.
Una possibilità più - si può provare a trovare river per MongoDB
Un'altra opzione - è quello di utilizzare Lucene
se si utilizza Java. Probabilmente si sarà in grado di estendere la classe Directory
, in modo tale che Lucene memorizzerà l'indice in MongoDb invece che nel file system o nella RAM. Non ho fatto alcuna ricerca in questo settore, ma penso sia possibile
Grazie Umar, stiamo andando a dare il vostro approcah una prova – stew
Mentre questa è un'opzione, si arriva a un punto in cui il peso dei dati è grande abbastanza per fare regex cerca una scelta inefficiente. Questo è infatti il motivo per cui gli indicizzatori di ricerca esistono. Integrano e aumentano lo storage persistente con lo scopo esplicito di mantenere costose operazioni di ricerca dal database. –
Anche con regex mongodDb può usare gli indici come ho detto in risposta, dipende dal tipo di regex – Anton