Załóżmy, że chcę użyć elasticsearch do wdrożenia wyszukiwania ogólnego na stronie internetowej. Górny pasek wyszukiwania powinien znajdować zasoby różnych typów w całej witrynie. Dokumenty na pewno (przesłane/zindeksowane za pośrednictwem tika), ale także takie rzeczy jak klienci, konta, inne osoby itp.Elasticsearch replikacja innych danych systemowych?
Ze względów architektonicznych większość dokumentów innych niż dokumenty (klienci, konta) będzie istniała w relacyjnej bazie danych.
Wdrażając to wyszukiwanie, opcją # 1 byłoby tworzenie wersji dokumentów wszystkiego, a następnie użycie elastycznego przeszukiwania, aby uruchomić wszystkie aspekty wyszukiwania, polegając w ogóle na relacyjnej bazie danych w celu znalezienia różnych typów obiektów.
Opcja nr 2 polega na użyciu elastycznego wyszukiwania tylko do indeksowania dokumentów, co oznaczałoby dla ogólnej funkcji "wyszukiwania w witrynie", musisz wydzielić wiele wyszukiwań do wielu systemów, a następnie zebrać wyniki przed ich zwrotem .
Opcja nr 1 wydaje się o wiele lepsza, ale wadą jest to, że wymaga ona, aby wyszukiwanie elastyczne miało w istocie kopię bardzo wielu różnych rzeczy w relacyjnej bazie danych produkcji, a także, że kopie te zachowają świeżość po zmianie.
Jaki jest najlepszy sposób na utrzymanie synchronizacji tych sklepów i czy mam rację, sądząc, że w przypadku wyszukiwania ogólnego opcja nr 1 jest lepsza? Czy istnieje opcja # 3?
Dzięki - intuicyjnie myślę, że opcja nr 1 jest lepsza. To, czego mi brakowało, to to, że nie wiedziałem o automatycznych narzędziach synchronizacji, takich jak Logstash JDBC, to kluczowy brakujący element, który sprawia, że opcja nr 1 jest o wiele łatwiejsza, niż sobie wyobrażałem. Mogę sobie poradzić z koniecznością propagowania operacji DELETE, ostatecznie oznacza to, że muszę mniej pracować, aby propagować zmiany, niż myślałem. Dzięki. – FrobberOfBits
Świetnie, cieszę się, że mogłem rzucić trochę światła na to! – Val
@ Val..jest tam ramy, które zapewnia przechwytywania do logów mysql bin, gdzie te przechwytywacze mogą wykonywać kod Java na podstawie zdarzenia w binlog i przesłać dane do elastycznego wyszukiwania? –