2011-11-06 15 views
18

Do czego służy zarówno ElasticSearch, jak i oddzielna baza danych Nosql? Czy Elasticsearch nie może być używany zarówno jako baza danych, jak i do indeksowania wyszukiwania?Baza danych Elasticsearch i NoSql

Odpowiedz

15

Tak, możesz użyć ElasticSearch jako źródła danych, a także indeksu.

Domyślnie każdy dokument wysyłany do systemu ElasticSearch jest indeksem, a oryginalny dokument również jest zapisywany. Oznacza to, że za każdym razem, gdy wyszukujesz ElasticSearch, możesz także pobrać oryginalny indeks JSON, który zindeksowałeś.

Jeśli masz duże dokumenty i chcesz mieć możliwość pobrania mniejszej ilości danych, wtedy możesz użyć interfejsu API mapowania, aby ustawić "przechowywać" na "tak" dla konkretnych pól, a następnie użyć "pól" klucz do wyciągnięcia określonych pól, które możesz chcieć.

W moim systemie mam autouzupełnianie adresów i tylko pobieżę z pola adresu właściwości. Oto przykład z mojego systemu:

_search?q=FullAddress:main&fields:FullAddress 

Wtedy, gdy użytkownik wybierze adres ja podciągnąć cały dokument JSON (wraz z innymi).

Uwaga:

  1. Nie można zrobić aktualizacje jak to możliwe w SQL (aktualizacja wszystkie pozycje pasujące do zapytania, aby zwiększyć atrybut, powiedzmy)
  2. Można jednak dodać nowy dokument i zastąpić istniejący na identyfikatorze, który chcesz zaktualizować. Elastyczne wyszukiwanie zwiększa właściwość _version w każdym dokumencie, który może być użyty przez programistę do wymuszenia optymistycznej współbieżności, ale nie utrzymuje osobnej historii wersji każdego dokumentu. Możesz pobrać tylko najnowszą wersję dokumentu.
+0

Czy bezpiecznie jest przesyłać zapytania do Elasticsearch bezpośrednio od strony klienta, a także, jeśli chcę śledzić zapytania dla poszczególnych użytkowników, będę musiał wdrożyć ElasticJs po stronie serwera (nodejs), czy nie? –