Korzystam z funkcji Tyre i elasticsearch, aby zapewnić funkcję wyszukiwania w modelu MongoMapper, który jest częścią aplikacji Rails. Właśnie natknął się na problem gdzie mapowania dla tego modelu nie były aktualizowane, kiedy przesunięte do środowiska, które wykorzystuje następującą konfigurację (w config/Środowiska/env_name.rb):Ponowne ładowanie opon/mapowania elastycznego przeszukiwania dla modelu, który już ma przechowywane dane
config.cache_classes = true
przeładowywania klasy sam nie zrobił Wydaje się, że naprawia problem (być może zrozumiałe, że nowe mapowania mogą nie być niekompatybilne z istniejącymi danymi?). zamiast tego musiałem wykonać następujące czynności:
MyModel.index.delete
<restart the app or reload the class>
MyModel.index.import MyModel.all
Po prostu zastanawiałem się, czy istnieje lepszy sposób na). zapewniając, że najnowsze mapowania zdefiniowane w kodzie modelu będą używane przez elastyczne wyszukiwanie po każdym wdrożeniu, ale b). unikanie niepotrzebnego ponownego indeksowania indeksu za pomocą kompletnego zestawu danych?
Zwykle wdrażamy za pomocą Chefa, więc mogłem zautomatyzować trzy kroki, które z powodzeniem zastosowałem bez większych problemów. Ale jestem nowicjuszem w zakresie elastycznego wyszukiwania i opon, więc pomyślałem, że bardzo prawdopodobne jest to, że niewłaściwie wykorzystuję oba elementy lub niepotrzebnie utrudniam pracę.
Byłem trochę zdezorientowany ostatnim akapitem, nie rozumiem, jak można użyć aliasu do innego indeksu, aby uniknąć śródmieścia. W scenariuszu, który opisałeś Nie przeszukuje mojego indeksu po prostu uruchamia się na mój-index-2012-12 podczas jego ponownego indeksowania? – concept47
Dzięki za odpowiedź na szczegóły. Zaznaczę to jako poprawne, ponieważ nie mogę znaleźć alternatywy. Wygląda na to, że odpowiedź brzmi: musisz ponownie zindeksować dane w moim scenariuszu i możesz użyć elastycznych aliasów, aby uniknąć przestojów w tym scenariuszu.Oto link z dodatkowymi informacjami na temat aliasów elasticsearch: http://www.elasticsearch.org/guide/reference/api/admin-indices-aliases.html Strona github dla opon teraz łączy się z tym i zawiera informacje na temat aliasów indeksu – willjthomas
@ concept47 jak na stronie github opony teraz: możesz indeksować swoje dane do nowego indeksu (i ewentualnie zaktualizować alias, gdy wszystko będzie dobrze). Więc nie tworzysz ponownie istniejącego indeksu, tworzysz nową wersję, a następnie odwracasz alias. Proszę mnie poprawić, jeśli się mylę. – willjthomas