From 370bebd6a28057333a2e7dd6760667969971effe Mon Sep 17 00:00:00 2001 From: trean Date: Tue, 2 Dec 2025 20:59:21 +0100 Subject: [PATCH] Elastic lucene lp (#2013) --- .../content/elastic-lucene/_index.md | 13 ++ .../elastic-lucene/elastic-lucene-callout.md | 9 + .../elastic-lucene/elastic-lucene-features.md | 30 +++ .../elastic-lucene/elastic-lucene-form.md | 14 ++ .../elastic-lucene-get-started.md | 15 ++ .../elastic-lucene/elastic-lucene-hero.md | 21 ++ .../elastic-lucene/elastic-lucene-lessons.md | 30 +++ .../elastic-lucene-migration.md | 17 ++ .../elastic-lucene-optimization.md | 30 +++ .../content/elastic-lucene/why-qdrant.md | 15 ++ .../assets/css/components/_utilites.scss | 4 + .../themes/qdrant-2024/assets/css/main.scss | 2 + .../assets/css/partials/_callout.scss | 106 ++++++++++ .../assets/css/partials/_menu.scss | 2 +- .../css/partials/elastic-lucene/_form.scss | 82 ++++++++ .../css/partials/elastic-lucene/_hero.scss | 121 +++++++++++ .../css/partials/elastic-lucene/_index.scss | 6 + .../elastic-lucene/_outlined-card-group.scss | 195 ++++++++++++++++++ .../elastic-lucene/_split-section.scss | 73 +++++++ .../layouts/elastic-lucene/list.html | 35 ++++ .../layouts/elastic-lucene/single.html | 1 + .../qdrant-2024/layouts/partials/callout.html | 9 + .../partials/elastic-lucene/features.html | 20 ++ .../partials/elastic-lucene/form-script.html | 184 +++++++++++++++++ .../layouts/partials/elastic-lucene/form.html | 17 ++ .../layouts/partials/elastic-lucene/hero.html | 30 +++ .../partials/elastic-lucene/lessons.html | 44 ++++ .../partials/elastic-lucene/migration.html | 40 ++++ .../partials/elastic-lucene/optimization.html | 24 +++ .../layouts/partials/elastic-lucene/why.html | 32 +++ .../qdrant-2024/layouts/partials/menu.html | 2 +- .../static/icons/outline/search-blue.svg | 3 + .../static/img/blurred/blurred-light-24.png | Bin 0 -> 38777 bytes .../static/img/blurred/blurred-light-25.png | Bin 0 -> 62977 bytes .../static/img/blurred/blurred-light-26.png | Bin 0 -> 59394 bytes .../astronaut-broken-elastic.png | Bin 0 -> 419250 bytes .../elastic-lucene/astronaut-holding-cube.png | Bin 0 -> 421140 bytes .../img/elastic-lucene/astronaut-light.png | Bin 0 -> 391516 bytes .../static/img/elastic-lucene/callout.png | Bin 0 -> 94308 bytes .../elastic-lucene/hybrid-search-preview.png | Bin 0 -> 93105 bytes .../static/img/elastic-lucene/image.png | Bin 0 -> 881907 bytes .../static/img/elastic-lucene/lights.svg | 45 ++++ .../migration-tool-illustration.png | Bin 0 -> 58627 bytes .../elastic-lucene/multivector-preview.png | Bin 0 -> 93950 bytes .../img/elastic-lucene/preview-day4-part.png | Bin 0 -> 13480 bytes .../img/elastic-lucene/preview-day6-part.png | Bin 0 -> 13517 bytes .../img/elastic-lucene/preview-empty-part.png | Bin 0 -> 13095 bytes .../static/img/elastic-lucene/sprinklr.svg | 42 ++++ .../static/img/square-grid-black.svg | 114 ++++++++++ .../themes/qdrant-2024/static/img/texture.png | Bin 0 -> 385662 bytes 50 files changed, 1425 insertions(+), 2 deletions(-) create mode 100644 qdrant-landing/content/elastic-lucene/_index.md create mode 100644 qdrant-landing/content/elastic-lucene/elastic-lucene-callout.md create mode 100644 qdrant-landing/content/elastic-lucene/elastic-lucene-features.md create mode 100644 qdrant-landing/content/elastic-lucene/elastic-lucene-form.md create mode 100644 qdrant-landing/content/elastic-lucene/elastic-lucene-get-started.md create mode 100644 qdrant-landing/content/elastic-lucene/elastic-lucene-hero.md create mode 100644 qdrant-landing/content/elastic-lucene/elastic-lucene-lessons.md create mode 100644 qdrant-landing/content/elastic-lucene/elastic-lucene-migration.md create mode 100644 qdrant-landing/content/elastic-lucene/elastic-lucene-optimization.md create mode 100644 qdrant-landing/content/elastic-lucene/why-qdrant.md create mode 100644 qdrant-landing/themes/qdrant-2024/assets/css/partials/_callout.scss create mode 100644 qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_form.scss create mode 100644 qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_hero.scss create mode 100644 qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_index.scss create mode 100644 qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_outlined-card-group.scss create mode 100644 qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_split-section.scss create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/elastic-lucene/list.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/elastic-lucene/single.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/callout.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/features.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/form-script.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/form.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/hero.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/lessons.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/migration.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/optimization.html create mode 100644 qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/why.html create mode 100644 qdrant-landing/themes/qdrant-2024/static/icons/outline/search-blue.svg create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/blurred/blurred-light-24.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/blurred/blurred-light-25.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/blurred/blurred-light-26.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/astronaut-broken-elastic.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/astronaut-holding-cube.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/astronaut-light.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/callout.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/hybrid-search-preview.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/image.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/lights.svg create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/migration-tool-illustration.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/multivector-preview.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/preview-day4-part.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/preview-day6-part.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/preview-empty-part.png create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/elastic-lucene/sprinklr.svg create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/square-grid-black.svg create mode 100644 qdrant-landing/themes/qdrant-2024/static/img/texture.png diff --git a/qdrant-landing/content/elastic-lucene/_index.md b/qdrant-landing/content/elastic-lucene/_index.md new file mode 100644 index 000000000..fe7db5978 --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/_index.md @@ -0,0 +1,13 @@ +--- +title: "Building production vector search shouldn’t be so hard." +description: "We asked our users building vector search why they moved to Qdrant +from Elastic, Opensearch or another Lucene-based search engine." +url: /lp/lucene +build: + render: always +cascade: +- build: + list: local + publishResources: false + render: never +--- diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-callout.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-callout.md new file mode 100644 index 000000000..00418bfa0 --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-callout.md @@ -0,0 +1,9 @@ +--- +title: Worried you'll collapse under real production load? +description:

Qdrant is the AI retrieval engine built to handle dense, hybrid, and AI-native workloads at a size and performance that legacy systems were never built for.

No JVM garbage-collection pauses, no 3 a.m. reindex job.

+image: + src: /img/elastic-lucene/callout.png + alt: Preview +sitemapExclude: true +--- + diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-features.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-features.md new file mode 100644 index 000000000..0e45e4005 --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-features.md @@ -0,0 +1,30 @@ +--- +title: Check Out Our Most Powerful Features +features: +- id: 0 + icon: + src: /icons/outline/search-blue.svg + alt: Hybrid Search icon + description: Build a search system by combining different search methods to improve retrieval quality + link: + text: Read about Hybrid Search + url: /articles/hybrid-search/ +- id: 1 + icon: + src: /icons/outline/slow-blue.svg + alt: Multivector Support icon + description: Avoid RAM overhead, slow inserts, and wasted compute by effectively using multivector representations. + link: + text: Read about Multivector Support + url: /documentation/advanced-tutorials/using-multivector-representations/ +- id: 2 + icon: + src: /icons/outline/multitenancy-blue.svg + alt: Multitenancy icon + description: Properly use a multitenant architecture to scale your product. + link: + text: Read about Multitenancy + url: /articles/multitenancy/ +sitemapExclude: true +--- + diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-form.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-form.md new file mode 100644 index 000000000..ee16b774c --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-form.md @@ -0,0 +1,14 @@ +--- +title: We'll Help You Benchmark +content:

If you have a production use case, run a side-by-side benchmark on your own index to measure latency, RAM footprint, and throughput before you decide.

Our team of Solution Architects will help you test feasibility, latency, and cost.

No strings attached, no commitment. Performance that speaks for itself.

+image: + src: /img/elastic-lucene/astronaut-holding-cube.png +form: + fallback: + text: "There is a form here, but unfortunately it is blocked on your side. Please check your browser settings, or try with a different browser." + # browsers also block external forms, so check if content is available + # on the fallback page before showing the button + # link: / + # buttonText: Click Here +sitemapExclude: true +--- diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-get-started.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-get-started.md new file mode 100644 index 000000000..3c98507d9 --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-get-started.md @@ -0,0 +1,15 @@ +--- +title: Build with Qdrant Cloud +description: | + Spin up a managed cluster in minutes, optimized for vector-heavy, real-time AI workloads. + + No more overprovisioning. No more reindexing. No more latency surprises. +button: + url: https://cloud.qdrant.io/ + text: Try Now + target: blank +image: + src: /img/database.svg + alt: Qdrant Cloud +sitemapExclude: true +--- diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-hero.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-hero.md new file mode 100644 index 000000000..51fc89003 --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-hero.md @@ -0,0 +1,21 @@ +--- +title: Building production vector search shouldn’t be so hard. +description: "We asked our users building vector search why they moved to Qdrant from Elastic, Opensearch or another Lucene-based search engine. Here’s what they tell us:" +quotes: + - Unacceptably slow queries with vector search + - Endless indexing jobs + - Overspending on over-provisioned memory + - Brittle hybrid search +closingText: Lucene-based architectures just aren't built for scaling vector search. +startFree: + text: Get Started + url: https://cloud.qdrant.io/signup +learnMore: + text: Contact Us + url: /contact-us/ +image: + src: /img/elastic-lucene/astronaut-broken-elastic.png + alt: Retrieval Augmented Generation +sitemapExclude: true +--- + diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-lessons.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-lessons.md new file mode 100644 index 000000000..0bbbd9322 --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-lessons.md @@ -0,0 +1,30 @@ +--- +title: "Learn How To Use Top Features with
Hands-On Lessons" +lessons: + - title: Out of the Box Hybrid Search + description: Meet every searcher's needs with hybrid search in Qdrant. Combine dense and sparse vectors, apply Reciprocal Rank Fusion (RRF), and build complex multi-stage pipelines, all in a single call with the Universal Query API. + link: + text: Learn how to fuse precision and meaning in your search + url: /course/essentials/day-3/hybrid-search/ + imageLeft: + src: /img/elastic-lucene/preview-empty-part.png + imageMiddle: + src: /img/elastic-lucene/hybrid-search-preview.png + alt: Hybrid Search Course + imageRight: + src: /img/elastic-lucene/preview-day4-part.png + - title: Multivector Mastery + description: Qdrant supports token-level precision with multivector fields for ColBERT-style late interaction. Compare query and document tokens via MaxSim scoring for sharper relevance, ideal for complex text and visual documents with ColPali. + link: + text: Learn how to use multivectors in your next Qdrant collection + url: /course/essentials/day-5/colbert-multivectors/ + imageLeft: + src: /img/elastic-lucene/preview-empty-part.png + imageMiddle: + src: /img/elastic-lucene/multivector-preview.png + alt: Hybrid Search Course + imageRight: + src: /img/elastic-lucene/preview-day6-part.png +sitemapExclude: true +--- + diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-migration.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-migration.md new file mode 100644 index 000000000..ffb41bc68 --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-migration.md @@ -0,0 +1,17 @@ +--- +title: Move Beyond Elastic Without Rebuilding +headerTitle: | + Ready to Build + Vector Search the Right Way? +subtitle: Seamlessly Bring Your Data to Qdrant with our Migration Tool. +description: Migrating from Elastic's Lucene-based stack doesn't have to mean starting over. Our Migration Tool lets you stream your existing vector data directly into Qdrant, live, fast, and with zero downtime. It works even while data is being inserted, supports reconfiguration, and eliminates the headaches of reindexing or overprovisioning. +descriptionSecond: Modernize your retrieval layer in hours, not weeks. +image: + src: /img/elastic-lucene/migration-tool-illustration.png + alt: Migration Tool Illustration +button: + text: Migrate Now + url: /documentation/database-tutorials/migration/ +sitemapExclude: true +--- + diff --git a/qdrant-landing/content/elastic-lucene/elastic-lucene-optimization.md b/qdrant-landing/content/elastic-lucene/elastic-lucene-optimization.md new file mode 100644 index 000000000..0c752dc3e --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/elastic-lucene-optimization.md @@ -0,0 +1,30 @@ +--- +title: Qdrant Can Optimize +features: +- id: 0 + icon: + src: /icons/outline/rocket-blue.svg + alt: Rocket + title: Latency + description: Build lightning fast, massive AI applications on our Rust powered, native vector search engine. +- id: 1 + icon: + src: /icons/outline/time-blue.svg + alt: Stopwatch + title: Ingestion Speed + description: Qdrant ingests millions of vectors/minute while staying queryable. +- id: 2 + icon: + src: /icons/outline/server-rack-blue.svg + alt: Server rack + title: Memory Provisioning + description: Stop over provisioning RAM to avoid failed index merges. Using Rust, Qdrant gives you more control over memory. +- id: 3 + icon: + src: /icons/outline/scale-blue.svg + alt: Scale + title: Scaling + description: Continue to meet your search KPIs at scale for speed, accuracy and cost with our vector-first features (e.g. native multi-vector). +sitemapExclude: true +--- + diff --git a/qdrant-landing/content/elastic-lucene/why-qdrant.md b/qdrant-landing/content/elastic-lucene/why-qdrant.md new file mode 100644 index 000000000..deaee5b39 --- /dev/null +++ b/qdrant-landing/content/elastic-lucene/why-qdrant.md @@ -0,0 +1,15 @@ +--- +title: Why Teams Build Qdrant Alongside Elastic +description: You don't have to rip anything out. +descriptionSecond: Most teams start by adding Qdrant next to their existing stack to handle new dense or hybrid workloads … the ones Elastic can't keep up with. +testimonial: + logo: + src: /img/elastic-lucene/sprinklr.svg + alt: Sprinklr Logo + text: Using Qdrant, Sprinklr achieved 90% faster write time, 80% faster latency, 2.5x higher RPS than with Elastic. + link: + text: Read More + url: /blog/case-study-sprinklr/ +sitemapExclude: true +--- + diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/components/_utilites.scss b/qdrant-landing/themes/qdrant-2024/assets/css/components/_utilites.scss index 55290e586..7628b4811 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/components/_utilites.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/components/_utilites.scss @@ -6,4 +6,8 @@ pointer-events: none; } +.grey-bg { + background-color: $neutral-94; +} + // add more utility classes here diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/main.scss b/qdrant-landing/themes/qdrant-2024/assets/css/main.scss index 0415a281f..852436b58 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/main.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/main.scss @@ -64,6 +64,7 @@ @import 'partials/use-cases-vector-cases'; @import 'partials/use-cases-vector-integrations'; @import 'partials/case-study'; +@import 'partials/callout'; @import 'partials/advanced-search-use-cases'; @import 'partials/recommendations-api'; @import 'partials/retrieval-augmented-generation-guide'; @@ -137,3 +138,4 @@ @import 'partials/edge-beta-form'; @import 'partials/edge-beta-faq'; @import 'partials/edge-beta-get-started'; +@import 'partials/elastic-lucene/index'; \ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_callout.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_callout.scss new file mode 100644 index 000000000..8a79710c8 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_callout.scss @@ -0,0 +1,106 @@ +@use '../helpers/functions' as *; + +.callout { + display: flex; + padding: pxToRem(80); + background-color: $neutral-10; + border-radius: $spacer; + overflow: hidden; + position: relative; + background-image: url('/img/texture.png'); + background-size: cover; + background-position: center; + background-repeat: no-repeat; + + &__lights-overlay { + position: absolute; + left: 0; + right: 0; + bottom: 0; + width: 100%; + height: pxToRem(376); + background-image: url('/img/blurred/blurred-light-24.png'), + url('/img/blurred/blurred-light-25.png'), + url('/img/blurred/blurred-light-26.png'); + background-position: top left, bottom left, bottom right; + background-size: contain, contain, contain; + background-repeat: no-repeat; + z-index: 1; + } + + &__square-grid-overlay { + position: absolute; + left: 0; + top: 0; + right: -20%; + bottom: -9px; + display: flex; + background-image: linear-gradient(270deg, rgba(11, 15, 25, 0.00) 26.48%, #0B0F19 87.55%), url('/img/square-grid-black.svg'); + background-size: cover, contain; + background-position: center right, center right; + background-repeat: no-repeat, no-repeat; + z-index: 0; + } + + &__illustration { + display: none; + position: absolute; + right: -20%; + top: pxToRem(34); + bottom: pxToRem(17); + width: 100%; + background-size: contain; + background-position: center right; + background-repeat: no-repeat; + + @include media-breakpoint-up(lg) { + display: block; + } + + @include media-breakpoint-up(xl) { + right: 0; + } + } + + &__content { + position: relative; + padding: 0; + max-width: 100%; + z-index: 2; + display: flex; + flex-direction: column; + gap: pxToRem(32); + + @include media-breakpoint-up(lg) { + max-width: pxToRem(560); + } + } + + &__title { + font-size: pxToRem(40); + line-height: pxToRem(50); + font-weight: 700; + color: $neutral-98; + margin-bottom: 0; + b { + color: $primary-50; + } + } + + &__description { + font-size: pxToRem(20); + line-height: pxToRem(30); + font-weight: 500; + color: $neutral-70; + margin-bottom: 0; + b { + color: $neutral-98; + } + p { + margin-bottom: pxToRem(32); + } + p:last-of-type { + margin-bottom: 0; + } + } +} diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_menu.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_menu.scss index 2989c625f..1c76888d5 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/_menu.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/_menu.scss @@ -24,7 +24,7 @@ padding-left: pxToRem(20); padding-right: pxToRem(20); background: linear-gradient(180deg, #090d19, rgba(9, 13, 25, 0)); - z-index: 1; + z-index: 10; &__trigger { outline: none; diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_form.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_form.scss new file mode 100644 index 000000000..3fd66d0ec --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_form.scss @@ -0,0 +1,82 @@ +.elastic-lucene-form { + padding-top: pxToRem(96); + padding-bottom: pxToRem(340); + background-color: $neutral-10; + overflow: hidden; + position: relative; + + @include media-breakpoint-up(lg) { + padding-bottom: pxToRem(96); + } + + &__overlay-bottom { + background-image: url('/img/blurred/blurred-light-4.png'); + transform: scale(-1, -1); + background-position: bottom right; + background-size: contain; + background-repeat: no-repeat; + width: 63rem; + height: 17rem; + } + + &__illustration { + position: absolute; + height: pxToRem(300); + left: 0; + width: 100%; + bottom: 0; + background-size: contain; + background-repeat: no-repeat; + background-position: center bottom; + + @include media-breakpoint-up(lg) { + height: 100%; + max-height: pxToRem(600); + width: 48%; + background-position: right bottom; + } + } + + &__content { + display: flex; + flex-direction: column; + gap: $spacer * 2.5; + } + + &__title { + font-size: $h4-font-size; + line-height: pxToRem(50); + font-weight: 700; + color: $neutral-98; + margin-bottom: 0; + } + + &__description p { + font-size: $font-size-md; + line-height: pxToRem(24); + font-weight: 500; + color: $neutral-70; + margin-bottom: $spacer * 0.5; + + &:last-of-type { + margin-bottom: 0; + } + } +} + +.luceneForm { + label { + color: $neutral-98; + } + + select[name='country'] { + width: 100% !important; + margin-right: 0; + } + .hs-form-checkbox { + list-style: none; + } + .hs-error-msg { + color: $error-50; + } +} diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_hero.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_hero.scss new file mode 100644 index 000000000..455783164 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_hero.scss @@ -0,0 +1,121 @@ +.elastic-lucene-hero { + background-color: $neutral-10; + padding: pxToRem(80) 0 pxToRem(440); + position: relative; + overflow: hidden; + + @include media-breakpoint-up(md) { + padding-bottom: pxToRem(120); + } + + &__illustration { + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: pxToRem(400); + background-image: var(--bg-image), url('/img/elastic-lucene/astronaut-light.png'); + background-position: + bottom center, + bottom center; + background-repeat: no-repeat, no-repeat; + background-size: contain, contain; + z-index: 1; + + @include media-breakpoint-up(md) { + display: block; + left: 50%; + right: pxToRem(-144); + background-position: + bottom left, + bottom left; + height: pxToRem(532); + } + } + + &__content { + display: flex; + flex-direction: column; + gap: $spacer * 2; + z-index: 4; + } + + &__title { + font-size: $h3-font-size; + line-height: pxToRem(58); + font-weight: 700; + color: $neutral-98; + margin-bottom: 0; + } + + &__description { + font-size: $font-size-l; + line-height: pxToRem(27); + font-weight: 500; + color: $neutral-70; + margin-bottom: 0; + + @include media-breakpoint-up(md) { + padding-right: pxToRem(144); + } + + @include media-breakpoint-up(lg) { + padding-right: 0; + } + } + + &__quotes { + position: relative; + padding-left: $spacer * 2; + + &-line { + position: absolute; + left: 0; + top: 0; + height: pxToRem(85); + width: pxToRem(1); + } + + &-list { + font-size: $font-size-s; + line-height: pxToRem(21); + font-weight: 400; + color: $neutral-70; + + p { + margin-bottom: 0; + } + } + } + + &__closing { + font-size: $font-size-l; + line-height: pxToRem(27); + font-weight: 500; + color: $neutral-70; + margin-bottom: 0; + + @include media-breakpoint-up(md) { + padding-right: pxToRem(160); + } + + @include media-breakpoint-up(lg) { + padding-right: 0; + } + } + + &__overlay { + position: absolute; + right: 0; + left: 0; + bottom: -6px; + width: 100%; + height: 300px; + background-image: url('/img/elastic-lucene/lights.svg'); + background-repeat: repeat-x; + background-position: center; + background-size: cover; + filter: blur(6px); + z-index: 3; + } +} diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_index.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_index.scss new file mode 100644 index 000000000..3b1cc9774 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_index.scss @@ -0,0 +1,6 @@ +@use '../../helpers/functions' as *; +@use '../../mixins/get-started-small' as get-started-small; +@import 'hero'; +@import 'outlined-card-group'; +@import 'split-section'; +@import 'form'; diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_outlined-card-group.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_outlined-card-group.scss new file mode 100644 index 000000000..6389d8554 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_outlined-card-group.scss @@ -0,0 +1,195 @@ +.outlined-card-group { + &__cards { + border: 1px solid $neutral-90; + border-radius: pxToRem(32); + padding: pxToRem(32); + gap: $spacer; + } + + &__header-card { + padding: $spacer * 2.5; + border-radius: pxToRem(16); + text-align: center; + } + + &__header-title { + font-size: pxToRem(40); + line-height: pxToRem(50); + font-weight: 700; + } + + &__card { + padding: pxToRem(24); + border-radius: pxToRem(16); + display: flex; + flex-direction: column; + max-width: 100%; + min-height: auto; + overflow: hidden; + + &--jumbo { + padding: $spacer * 2.5; + } + } + + &__cards .row > [class*='col-'] > &__card { + height: 100%; + } + + &__content { + display: flex; + flex-direction: column; + gap: $spacer * 1.5; + padding-left: $spacer * 1.5; + padding-right: $spacer * 1.5; + + &--jumbo { + gap: $spacer * 2; + margin-top: 0; + padding-left: 0; + padding-right: 0; + + @include media-breakpoint-up(lg) { + flex-direction: row; + align-items: flex-end; + gap: $spacer * 4; + } + } + } + + &__content--jumbo &__text { + @include media-breakpoint-up(lg) { + flex: 1 1 auto; + max-width: pxToRem(468); + } + } + + &__text { + display: flex; + flex-direction: column; + gap: $spacer; + } + + &__icon { + width: pxToRem(24); + height: pxToRem(24); + } + + &__title { + font-size: pxToRem(24); + line-height: pxToRem(34); + font-weight: 700; + color: $neutral-20; + margin-bottom: 0; + + &--small { + font-size: pxToRem(20); + } + + &--large { + font-size: pxToRem(40); + line-height: pxToRem(50); + } + } + + &__subtitle { + font-size: pxToRem(16); + line-height: pxToRem(24); + font-weight: 700; + color: $neutral-20; + margin-bottom: 0; + } + + &__description { + font-size: pxToRem(16); + line-height: pxToRem(24); + font-weight: 500; + color: $neutral-20; + margin-bottom: 0; + + &--small { + font-size: pxToRem(14); + line-height: pxToRem(21); + font-weight: 400; + } + } + + &__illustration { + width: 100%; + align-self: center; + + img { + width: 100%; + height: auto; + display: block; + } + + @include media-breakpoint-up(lg) { + flex: 0 0 auto; + width: auto; + max-width: 50%; + } + } + + &__button { + align-self: flex-start; + margin-top: $spacer * 0.5; + } + + &__link { + width: auto; + align-self: flex-start; + font-size: pxToRem(16); + } +} + +.og-card { + &__images-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 1rem; + margin-top: pxToRem(32); + margin-left: -$spacer * 1.5; + margin-right: -$spacer * 1.5; + margin-bottom: pxToRem(40); + + img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; + transition: transform 0.3s ease; + } + + & > div:first-child { + width: 16.9%; + } + & > div:nth-child(2) { + width: 60%; + aspect-ratio: 103/58; + overflow: hidden; + border-radius: pxToRem(8); + + a { + display: block; + width: 100%; + height: 100%; + transition: + transform 0.3s ease, + opacity 0.3s ease; + + &:hover { + opacity: 0.9; + + img { + transform: scale(1.02); + } + } + } + } + & > div:last-child { + width: 16.9%; + } + } +} diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_split-section.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_split-section.scss new file mode 100644 index 000000000..2aeafbaab --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/elastic-lucene/_split-section.scss @@ -0,0 +1,73 @@ +.split-section { + &__content { + display: flex; + flex-direction: column; + gap: $spacer; + } + + &__title { + font-size: pxToRem(40); + line-height: pxToRem(50); + font-weight: 700; + color: $neutral-20; + margin-bottom: 0; + } + + &__description { + display: flex; + flex-direction: column; + gap: $spacer; + } + + &__description > p { + font-size: pxToRem(16); + line-height: pxToRem(24); + font-weight: 500; + color: $neutral-30; + margin-bottom: 0; + } + + &__testimonial-card { + display: flex; + flex-direction: column; + gap: $spacer * 1.5; + padding: $spacer * 2.5; + background-color: $neutral-98; + border: 1px solid $neutral-90; + border-radius: $spacer; + } + + &__logo-container { + display: flex; + align-items: center; + justify-content: center; + padding: pxToRem(18) pxToRem(20); + background-color: $neutral-98; + border: 1px solid $neutral-90; + border-radius: pxToRem(12); + width: pxToRem(160); + height: pxToRem(64); + } + + &__logo { + width: pxToRem(120); + } + + &__testimonial-text { + margin-bottom: 0; + font-weight: 700; + font-size: pxToRem(18); + line-height: pxToRem(27); + color: $neutral-20; + } + + &__link-wrapper { + display: flex; + align-items: center; + gap: pxToRem(2); + } + + &__link { + color: $primary-50; + } +} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/elastic-lucene/list.html b/qdrant-landing/themes/qdrant-2024/layouts/elastic-lucene/list.html new file mode 100644 index 000000000..36a12b601 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/elastic-lucene/list.html @@ -0,0 +1,35 @@ +{{ define "main" }} + {{ partial "site-header" . }} + {{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-hero") }} + {{ partial "elastic-lucene/hero" . }} + {{ end }} + + {{ $class := "rag-use-cases" }} +
+
+ {{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-callout.md") }} + {{ partial "callout" . }} + {{ end }} +
+
+ + {{ partial "elastic-lucene/optimization" . }} + + {{ partial "elastic-lucene/features" . }} + + {{ partial "elastic-lucene/why" . }} + + {{ partial "elastic-lucene/migration" . }} + + {{ partial "elastic-lucene/form" . }} + + {{ partial "elastic-lucene/lessons" . }} + + {{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-get-started") }} + {{ partial "get-started-small" (dict "context" . "class" "get-started-small-database") }} + {{ end }} + + {{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-form") }} + {{ partial "elastic-lucene/form-script" . }} + {{ end }} +{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/elastic-lucene/single.html b/qdrant-landing/themes/qdrant-2024/layouts/elastic-lucene/single.html new file mode 100644 index 000000000..806bcec80 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/elastic-lucene/single.html @@ -0,0 +1 @@ +{{ define "main" }}{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/callout.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/callout.html new file mode 100644 index 000000000..c8ee8c86d --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/callout.html @@ -0,0 +1,9 @@ +
+
+
+
+
+
{{ .Params.title | safeHTML }}
+
{{ .Params.description | safeHTML }}
+
+
diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/features.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/features.html new file mode 100644 index 000000000..a7015e994 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/features.html @@ -0,0 +1,20 @@ +{{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-features") }} +
+
+

{{ .Params.title }}

+
+ {{ range $index, $feature := .Params.features }} + + {{ end }} +
+
+
+{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/form-script.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/form-script.html new file mode 100644 index 000000000..29c76665a --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/form-script.html @@ -0,0 +1,184 @@ + + diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/form.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/form.html new file mode 100644 index 000000000..d03fab6f2 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/form.html @@ -0,0 +1,17 @@ +{{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-form") }} +
+
+
+
+
+

{{ .Params.title }}

+
+ {{ .Params.content | safeHTML }} +
+
+
+
+
+ {{ partial "top-and-bottom-overlay" (dict "context" . "class" "elastic-lucene-form") }} +
+{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/hero.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/hero.html new file mode 100644 index 000000000..f6412aee6 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/hero.html @@ -0,0 +1,30 @@ +
+
+
+
+
+

{{ .Params.title }}

+

{{ .Params.description }}

+
+ + + +
+ {{ range .Params.quotes }} +

{{ . }}

+ {{ end }} +
+
+

{{ .Params.closingText }}

+
+
+
+
+
diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/lessons.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/lessons.html new file mode 100644 index 000000000..1c207e0c7 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/lessons.html @@ -0,0 +1,44 @@ +{{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-lessons") }} +
+
+
+
+
+

+ {{ .Params.title | safeHTML }} +

+
+
+
+ {{ range .Params.lessons }} +
+
+
+ {{ .imageLeft.alt }} +
+
+ + {{ .imageMiddle.alt }} + +
+
+ {{ .imageRight.alt }} +
+
+ +
+
+
{{ .title | safeHTML }}
+

{{ .description | safeHTML }}

+
+ + {{ .link.text }} + +
+
+ {{ end }} +
+
+
+
+{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/migration.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/migration.html new file mode 100644 index 000000000..817bd5db1 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/migration.html @@ -0,0 +1,40 @@ +{{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-migration") }} +
+
+
+
+
+

+ {{ .Params.headerTitle | safeHTML }} +

+
+
+
+
+
+
+ {{ .Params.image.alt }} +
+
+

{{ .Params.title }}

+

{{ .Params.subtitle }}

+

+ {{ .Params.description }} +

+

+ {{ .Params.descriptionSecond }} +

+ + {{ .Params.button.text }} + +
+
+
+
+
+
+
+{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/optimization.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/optimization.html new file mode 100644 index 000000000..8ce578e13 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/optimization.html @@ -0,0 +1,24 @@ +{{ with (.Site.GetPage "/elastic-lucene/elastic-lucene-optimization") }} +
+
+
+

{{ .Params.title }}

+
+
+
+ {{ range .Params.features }} +
+
+
+ {{ .icon.alt }} +
{{ .title }}
+

{{ .description }}

+
+
+
+ {{ end }} +
+
+
+
+{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/why.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/why.html new file mode 100644 index 000000000..e963baa28 --- /dev/null +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/elastic-lucene/why.html @@ -0,0 +1,32 @@ +{{ with (.Site.GetPage "/elastic-lucene/why-qdrant") }} +
+
+
+
+
+

{{ .Params.title }}

+
+

{{ .Params.description }}

+

{{ .Params.descriptionSecond }}

+
+
+
+
+
+
+ +
+

{{ .Params.testimonial.text }}

+ +
+
+
+
+
+{{ end }} diff --git a/qdrant-landing/themes/qdrant-2024/layouts/partials/menu.html b/qdrant-landing/themes/qdrant-2024/layouts/partials/menu.html index 9e77a0485..81cb2cda4 100644 --- a/qdrant-landing/themes/qdrant-2024/layouts/partials/menu.html +++ b/qdrant-landing/themes/qdrant-2024/layouts/partials/menu.html @@ -1,6 +1,6 @@ {{ $section := .Section }} {{ with (.Site.GetPage "/headless/menu") }} -