2013-07-25 12 views
38

Przeczytałem wiele dobrej dokumentacji na temat wdrażania Elastic Search na stronie z javascript lub PHP.Jak korzystać z Elastic Search na bazie istniejącej bazy danych SQL?

Bardzo dobrze introduction to ES.

Kompletna dokumentacja: here i here.

Cały CRUD.

Elastyczne wyszukiwanie za pomocą PHP: here, here i here.

Powodem, dla którego podaję ci te URL-e, jest zrozumienie, jak używać jednej lub wielu z tych wspaniałych dokumentacji przy istniejącej bazie danych SQL.

Brakuje mi jakiegoś punktu: Jak powiedzieli, Elasticsearch utworzy własne indeksy i DB z MongoDB, nie rozumiem, jak mogę użyć mojej (gigantycznej) bazy danych za pomocą SQL? Powiedzmy, że mam MySQL DB i chciałbym użyć Elasticsearch, aby moje badania były szybsze i zaproponować użytkownikowi gotowe zapytania, jak to zrobić? Jak działa ES nad/po MySQL? Jak przenieść ten gigantyczny zestaw danych (ponad 8 GB) do ES DB, aby był w pełni wydajny na początku?

Wiele Dzięki

+0

Pomyśl elasticsearch jak innym db, jest to dokument na podstawie bazy danych NoSQL (jak MongoDB) opimized wyszukiwania. Będziesz musiał zindeksować wszystkie dane w elastycznym wyszukiwaniu, aby go użyć. – ramseykhalaf

+0

Więc masz na myśli, że będę musiał przenieść wszystkie informacje, które mam w mojej rzeczywistej DB do bazy danych ES'NoSQL? Za każdym razem, gdy dodam coś do mojego SQL DB, muszę zrobić kopię do ES's DB? –

+4

Istnieją techniki utrzymywania ich w synchronizacji. Spójrz na rzeki. Musisz zaimportować tylko te informacje, których faktycznie używasz do wyszukiwania, więc może nie być to każde pole. Zastanówcie się, w jaki sposób będzie on mógł przeszukiwać znacznie szybciej niż SQL, nie zmieniając w jakiś sposób danych? Jeśli nie trzeba tego robić, to pewnie faceci bazy danych mySQL zaimplementowali coś! – ramseykhalaf

Odpowiedz

21

używam jdbc-river w/MySQL. To jest bardzo szybkie. Możesz skonfigurować je do ciągłego odpytywania danych lub importowania za pomocą jednorazowej (jednorazowej strategii).

np.

curl -xPUT http://es-server:9200/_river/my_river/_meta -d ' 
{ 
    "type" : "jdbc", 
    "jdbc" : { 
     "strategy" : "simple", 
     "poll" : "5s", 
     "scale" : 0, 
     "autocommit" : false, 
     "fetchsize" : 10, 
     "max_rows" : 0, 
     "max_retries" : 3, 
     "max_retries_wait" : "10s", 
     "driver" : "com.mysql.jdbc.Driver", 
     "url" : "jdbc:mysql://mysql-server:3306/mydb", 
     "user" : "root", 
     "password" : "password*", 
     "sql" : "select c.id, c.brandCode, c.companyCode from category c" 
    }, 
    "index" : { 
     "index" : "mainIndex", 
     "type" : "category", 
     "bulk_size" : 30, 
     "max_bulk_requests" : 100, 
     "index_settings" : null, 
     "type_mapping" : null, 
     "versioning" : false, 
     "acknowledge" : false 
    } 
}' 
4

Jeśli potrzebujesz bardziej wydajnych i skalowalne rozwiązanie do odpytywania oferowanych przez JDBC rzeki, polecam, aby obejrzeć tę prezentację, która wyjaśnia, jak wykonać przyrostową synchronizacji z SQL Server do Elastic Search:

Zasady omówione w filmie dotyczą także innych aplikacji do replikacji RDBMS -> NoSQL.

Powiązane problemy