Lucene to biblioteka Java . Możesz dołączyć go do swojego projektu i odwoływać się do jego funkcji za pomocą wywołań funkcji.
Elasticsearch jest JSON oparte Ukazuje , serwer WWW zbudowany nad Lucene. Chociaż to Lucene wykonuje rzeczywistą pracę pod spodem, Elasticsearch zapewnia nam wygodną warstwę nad Lucene. Każdy fragment utworzony w Elasticsearch jest oddzielną instancją Lucene. Podsumowując
- Elasticsearch jest zbudowany na Lucene i zapewnia oparty na JSON interfejs API REST w celu odwoływania się do funkcji Lucene.
- Elasticsearch zapewnia system rozproszony na szczycie Lucene . System rozproszony nie jest czymś, o czym Lucene jest świadomy lub do czego został stworzony. Elasticsearch zapewnia taką abstrakcję rozproszonej struktury.
- Elasticsearch zapewnia inne funkcje pomocnicze, takie jak pula wątków, kolejki, interfejs API do monitorowania węzłów / klastrów, interfejs API do monitorowania danych, zarządzanie klastrami itp.
Oprócz słów @Vineeth Mohan :
Wysoka dostępność: Elasticsearch jest dystrybuowany, dzięki czemu może zarządzać replikacją danych, co oznacza posiadanie wielu kopii danych w klastrze. Zapewnia to wysoką dostępność.
Potężne zapytanie DSL : Elasticsearch oferuje nam interfejs JSON do czytania i pisania zapytań na szczycie Lucene. Dzięki Elasticsearch możesz pisać złożone zapytania bez znajomości składni Lucene.
Bez schematu (bez schematu): Pola (nazwa, pary wartości) dla
schema
nie muszą być wcześniej definiowane. Podczas indeksowania danych, Flexiblesearch może automatycznie tworzyć schemat w czasie wykonywania, jak Magic.źródło
Odpowiem z perspektywy użytkowania.
Lucene to biblioteka wyszukiwarek . Chciałbyś go użyć do zbudowania własnej wyszukiwarki: albo nowego konkurenta Elasticsearch lub Solr, albo czegoś wąskiego dla twojego przypadku użycia (np. Analiza tekstu).
Elasticsearch to wyszukiwarka . Większość ludzi używa go do agregacji logów, wyszukiwania produktów lub ich wariantu (np. Analizy mediów społecznościowych lub znajdowania odpowiednich osób dla niektórych kryteriów wyszukiwania). Jest zbudowany na Lucene, więc eksponuje większość (choć nie wszystkie) jego funkcji . Dodaje też wiele do góry, a przede wszystkim:
źródło
Dodam do dyskusji inny punkt widzenia.
Indeks Elasticsearch kontra indeks Lucene.
Indeks Elasticsearch jest fragment dokumentów podobnie jak bazy danych składa się z tabel w relacyjnej świata.
Aby osiągnąć skalowanie, rozkładamy indeksy Elasticsearch na wiele fizycznych węzłów / serwerów.
W tym celu dzielimy indeksy Elasticsearch na mniejsze jednostki zwane shardami .
Pytanie: Jaki jest związek z indeksem Lucene?
Jeśli chcemy wyszukać konkretny termin (na przykład: „ Ciasto ” lub „ Ciasteczko ”), będziemy musieli przejrzeć każdy fragment i poszukać go (odłóżmy na bok, w jaki sposób fragmenty są lokalizowane i replikowane w każdym węźle).
Ta operacja zajmie dużo czasu - dlatego musimy użyć wydajnej struktury danych do tego wyszukiwania - w tym miejscu do gry wkracza indeks Lucene .
Każdy fragment Elasticsearch jest oparty na strukturze indeksu Lucene i przechowuje statystyki dotyczące terminów, aby zwiększyć wydajność wyszukiwania opartego na terminach.
(!) Jest to ciche i mylące ze względu na słowo „index” i fakt, że fragment Elasticsearch jest częścią indeksu Elasticsearch, ALE jest oparty na strukturze danych indeksu Lucene.
Bonus - indeks Lucene jako indeks odwrócony
Jak widać na poniższym przykładzie, indeks Lucene przechowuje treść oryginalnego dokumentu oraz dodatkowe informacje, takie jak słownik terminów i częstotliwości terminów, które zwiększają wydajność wyszukiwania:
Indeks Lucene należy do rodziny indeksów znanej jako indeks odwrócony. Dzieje się tak, ponieważ może ona na przykład wymieniać dokumenty, które go zawierają.
Jest to odwrotność naturalnej zależności, w której dokumenty wymieniają terminy.
(Przypomnienie) Jak doszliśmy od odłamka do terminu?
(1) Shard to katalog plików, który zawiera dokumenty.
(2) Dokument to sekwencja pól.
(3) Pole to nazwana sekwencja terminów.
źródło