5

Konfiguruję rzekę JDBC dla ElasticSearch, ale nie mogę znaleźć żadnego dobrego przykładu konfiguracji. Przeczytałem wszystkie pages na elasticsearch-river-jdbc GitHub.Pobieranie zmian z tabeli za pomocą rzeki JDBC ElasticSearch

Mam zapytanie SQL i muszę pobierać zmiany ze wszystkich kolumn tabeli co X sekund. Jak mogę powiedzieć JDBC river, że niektóre wiersze zostały zmienione i powinny zostać ponownie zindeksowane?

Dane są pobierane podczas startu serwera ES, trwa polling, ale zmiany nie są pobierane z DB do ES.

Moja konfiguracja:

curl -XPUT 'localhost:9200/_river/itemsi/_meta' -d '{ 
"type" : "jdbc", 
"jdbc" : { 
    "driver" : "com.mysql.jdbc.Driver", 
    "url" : "jdbc:mysql://mydb.com:3306/dbname", 
    "user" : "yyy", 
    "password" : "xxx", 
    "sql" : "SELECT ii.id AS _id, ii.id AS myid, ... FROM ... LEFT JOIN .. ON...", 
    "poll" : "6s", 
    "strategy" : "simple" 
    }, 
"index" : { 
    "index" : "invoiceitems", 
    "bulk_size" : 600, 
    "max_bulk_requests" : 10, 
    "bulk_timeout" : "5s", 
    } 
}' 

Dziękuję.

Odpowiedz

1

Dodaj

"trybu automatycznego": true

w ustawieniach indeksu. Następnie problem zostanie rozwiązany

0

Mogę tylko podać moją opinię na ten temat, ponieważ obecnie buduję rozwiązanie, które wykonuje duży indeks w Informix DB. Oto mój obecny proces myślowy, który nie został przetestowany lub wdrożony -

Co mam zamiar zrobić, to zrobić jednorazowy indeks samej bazy danych, od tego narzędzia uruchamia się, aby zaktualizować i/lub nowe rekordy w osobnej tabeli. Oczywiście po wykonaniu początkowego indeksu skasuję tę rzekę, aby powstrzymać ją przed ponownym uruchomieniem głównego indeksu, stąd zdefiniuję rzekę do odpytywania tabeli, która będzie zawierać zaktualizowane i/lub nowe zapisy co 15 minut na przykład i załaduj to do ES.

Bit, którego jeszcze nie dość jeszcze wymyśliłem, aktualizuje rekordy już w ES, ponieważ nie jestem świadomy żadnej funkcjonalności w obrębie wtyczki rzeki, która pozwala ustawić identyfikator rekordu z może pola ID w obrębie rzeczywistego rekordu DB, umożliwiając pobieranie i aktualizację z ES. Być może pisząc samodzielny program, który robi dokładnie to, co robi plugin rzeczny ?!

Wszystkie myśli i spekulacje w tej chwili, ale jak powiedziałem, obecnie pracuję nad tym. Jeśli pamiętam, prawdopodobnie wrócę tutaj i opublikuję ostateczną implementację, jeśli tylko pozwoli jej to zajść tak daleko.

+0

Dziękujemy! Z powodu braku dokumentacji dla ElasticSearch, myślę o Sphinx. Ale będę szczęśliwy, jeśli napiszesz później po twoich badaniach. – Xdg

2

Możesz użyć parametru harmonogramu, który umożliwia powtarzalne uruchamianie wtyczki jdbc.

Przykład parametru planu:

"schedule" : "0 0-59 0-23 ? * *" 

ten wykonuje JDBC rzekę każda minuta, każda godzina, wszystkie dni w tygodniu/miesiącu/roku.

Aby uzyskać więcej informacji o harmonogramie parametru czytać dokumentacji https://github.com/jprante/elasticsearch-river-jdbc

Powiązane problemy