2011-11-06 5 views
18

Quelle est l'utilité d'utiliser à la fois ElasticSearch et une base de données Nosql séparée? Impossible d'utiliser Elasticsearch à la fois comme base de données et pour l'indexation de recherche?Elasticsearch et la base de données NoSql

Répondre

15

Oui, vous pouvez utiliser ElasticSearch en tant que source de données et index.

Par défaut, chaque document que vous envoyez au système ElasticSearch est index et le document d'origine est également stocké. Cela signifie que chaque fois que vous interrogez ElasticSearch, vous pouvez également récupérer le document JSON d'origine que vous avez indexé.

Si vous avez des documents volumineux et que vous souhaitez pouvoir récupérer une plus petite quantité de données, vous pouvez utiliser l'API de mappage pour définir "stocker" sur "oui" pour des champs spécifiques, puis utiliser les "champs" clé pour extraire des champs spécifiques que vous pourriez vouloir.

Dans mon système j'ai l'auto-complétion d'adresse et je ne récupère que le champ d'adresse d'une propriété. Voici un exemple de mon système:

_search?q=FullAddress:main&fields:FullAddress 

Ensuite, lorsqu'un utilisateur sélectionne l'adresse, je tire tout le document JSON (avec d'autres).

Note:

  1. Vous ne pouvez pas faire des mises à jour comme vous pouvez dans SQL (mettre à jour tous les éléments correspondant à une requête pour augmenter un attribut, disons)
  2. Vous pouvez cependant ajouter un nouveau document et remplacer celui existant à l'ID que vous voulez mettre à jour. La recherche élastique incrémente une propriété _version sur chaque document qui peut être utilisé par le développeur pour appliquer une simultanéité optimiste, mais il ne conserve pas d'historique de version distinct de chaque document. Vous pouvez uniquement récupérer la dernière version d'un document.
+0

Est-il sûr d'interroger Elasticsearch directement du côté client, et si je voulais suivre les requêtes par utilisateur, je devrais implémenter ElasticJs côté serveur (nodejs) ou pas? –

Questions connexes