Używam Elasticsearch Bulk API do tworzenia lub aktualizowania dokumentów.Elasticsearch Bulk API - Indeks vs Utwórz/zaktualizuj
W rzeczywistości wiem, czy są tworzone lub aktualizacje, ale mogę uprościć mój kod, po prostu robiąc je wszystkie index
, lub "upserts" w sensie SQL.
Czy jest jakaś wada w korzystaniu z index
(i pozwalanie ES-go to rozgryźć) na używanie bardziej jednoznacznych create
i update
?
Załóżmy, że możesz potencjalnie zamienić dany dokument wiele, wiele razy (np. Wielokrotnie indeksując ten sam dokument). Skoro ES tak naprawdę niczego nie "usuwa", to czy nie dodajesz coraz więcej dokumentów i nie zwiększasz ich numeru wersji, pozostawiając je później w garbage collectorze, aby oczyścić starsze wersje? Czy w takim przypadku nie korzystasz z indeksu zamiast tworzyć w najbliższym czasie indeksu, który może wpłynąć na wydajność? I czy przyszłe intensywne korzystanie z funkcji zbierania śmieci również nie wpłynie na wydajność? To jest prawdziwe pytanie, które zastanawiam się, a nie retoryczne. Dzięki – cwarny
Ale kiedy aktualizujesz dokument, czy to nie jest pobieranie, modyfikowanie, a następnie indeksowanie? W Aktualizowaniu całego dokumentu stwierdziliśmy, że sposobem aktualizacji dokumentu jest jego odzyskanie, zmiana, a następnie ponowne zindeksowanie całego dokumentu. To prawda. Jednak za pomocą interfejsu API aktualizacji możemy wprowadzać częściowe aktualizacje, takie jak zwiększanie licznika w jednym żądaniu. Powiedzieliśmy również, że dokumenty są niezmienne: nie można ich zmienić, a jedynie wymienić. Interfejs API aktualizacji musi być zgodny z tymi samymi regułami. –