2011-11-06 20 views
18

A cosa serve utilizzare sia ElasticSearch sia un database Nosql separato? Non è possibile utilizzare Elasticsearch come database e per l'indicizzazione della ricerca?Database Elasticsearch e NoSql

risposta

15

Sì, è possibile utilizzare ElasticSearch come origine dati oltre che come indice.

Per impostazione predefinita, ogni documento inviato al sistema ElasticSearch è indicizzato e, inoltre, il documento originale viene memorizzato. Ciò significa che ogni volta che si esegue una query su ElasticSearch è possibile recuperare anche il documento JSON originale che è stato indicizzato.

Se si dispone di documenti di grandi dimensioni e si desidera poter recuperare una quantità minore di dati, quindi quando è possibile utilizzare l'API di mappatura per impostare "archivio" su "sì" per campi specifici, quindi utilizzare i "campi" chiave per estrarre campi specifici che potreste desiderare.

Nel mio sistema ho il completamento automatico dell'indirizzo e recupero solo il campo dell'indirizzo di una proprietà. Ecco un esempio dal mio sistema:

_search?q=FullAddress:main&fields:FullAddress 

Quindi quando un utente seleziona l'indirizzo, estraggo l'intero documento JSON (insieme ad altri).

Nota:

  1. Non si può fare gli aggiornamenti, come è possibile in SQL (aggiornare tutti elementi soddisfano una query per aumentare un attributo, diciamo)
  2. È possibile, tuttavia, aggiungere un nuovo documento e sostituire quello esistente nell'ID che desideri aggiornare. La ricerca elastica incrementa una proprietà _version su ciascun documento che può essere utilizzata dallo sviluppatore per rafforzare la concorrenza ottimistica, ma non mantiene una cronologia delle versioni separata di ogni documento. È possibile recuperare solo la versione più recente di un documento.
+0

È sicuro interrogare Elasticsearch direttamente dal lato client, e anche se volessi tenere traccia delle query per utente, avrò bisogno di implementare ElasticJs sul lato server (nodejs) o no ?? –