Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 7 additions & 8 deletions content/api/javascript/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ This gif shows how to create an index on reactivesearch.io cluster, which we wil

![](https://www.dropbox.com/s/qa5nazj2ajaskr6/wky0vrsPPB.gif?raw=1)

For this tutorial, we will use an index called `good-books-demo`. The credentials for this index are `376aa692e5ab:8472bf31-b18a-454d-bd39-257c07d02854`.
For this tutorial, we will use an index called `good-books-ds`. The credentials are `d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0`.

> Note <i class="fa fa-info-circle"></i>
>
Expand All @@ -59,19 +59,18 @@ To write data to [appbase.io](https://reactivesearch.io), we need to first creat

```js
var appbaseRef = Appbase({
url: 'https://appbase-demo-ansible-abxiydt-arc.searchbase.io',
app: 'good-books-demo',
credentials: 'c84fb24cbe08:db2a25b5-1267-404f-b8e6-cf0754953c68',
url: 'https://reactivesearch-api-9-3-0.onrender.com',
app: 'good-books-ds',
credentials: 'd03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0',
});
```

**OR**

```js
var appbaseRef = Appbase({
url:
'https://c84fb24cbe08:db2a25b5-1267-404f-b8e6-cf0754953c68@appbase-demo-ansible-abxiydt-arc.searchbase.io',
app: 'good-books-demo',
url: 'https://d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0@reactivesearch-api-9-3-0.onrender.com',
app: 'good-books-ds',
});
```

Expand Down Expand Up @@ -128,7 +127,7 @@ appbaseRef.get({

/* get() response */
{
"_index": "good-books-demo",
"_index": "good-books-ds",
"_type": "books",
"_id": "X1",
"_version": 5,
Expand Down
8 changes: 4 additions & 4 deletions content/docs/reactivesearch/react-searchbox/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ import { SearchBox, SearchBase, SearchComponent } from '@appbaseio/react-searchb
export default () => (
<SearchBase
index="good-books-ds"
credentials="a03a1cb71321:75b6603d-9456-4a5a-af6b-a487b309eb61"
url="https://arc-cluster-appbase-demo-6pjy6z.searchbase.io"
credentials="d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0"
url="https://reactivesearch-api-9-3-0.onrender.com"
>
<div>
<SearchBox
Expand Down Expand Up @@ -146,8 +146,8 @@ import {
export default () => (
<SearchBase
index="good-books-ds"
credentials="a03a1cb71321:75b6603d-9456-4a5a-af6b-a487b309eb61"
url="https://arc-cluster-appbase-demo-6pjy6z.searchbase.io"
credentials="d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0"
url="https://reactivesearch-api-9-3-0.onrender.com"
>
<div>
<SearchBox
Expand Down
4 changes: 2 additions & 2 deletions content/docs/reactivesearch/react/list/singlelist.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ Example uses:
URLParams={false}
loader="Loading ..."
endpoint={{
url:"https://appbase-demo-ansible-abxiydt-arc.searchbase.io/recipes-demo/_reactivesearch.v3", //mandatory
url:"https://reactivesearch-api-9-3-0.onrender.com/recipes-demo/_reactivesearch", //mandatory
headers:{
// relevant headers
Authorization: 'Basic ZDAzZTZmNWYzM2Q1OjQ5MTI0Njc0LTU1NGUtNDM0My05YWIyLTAwNmIyOTMyZjVjMA=='
},
method: 'POST'
}}
Expand Down
6 changes: 3 additions & 3 deletions content/docs/reactivesearch/react/overview/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ Lets add our first ReactiveSearch component: [ReactiveBase](/docs/reactivesearch

![create an appbase.io index](https://www.dropbox.com/s/qa5nazj2ajaskr6/wky0vrsPPB.gif?raw=1)

**Caption:** For the example that we will build in this tutorial, the app is called **good-books-ds** and the associated read-only credentials are **04717bb076f7:be54685e-db84-4243-975b-5b32ee241d31**. You can browse and export the dataset to JSON or CSV from [here](https://dejavu.appbase.io/?appname=good-books-ds&url=https://04717bb076f7:be54685e-db84-4243-975b-5b32ee241d31@appbase-demo-ansible-abxiydt-arc.searchbase.io&mode=edit).
**Caption:** For the example that we will build in this tutorial, the app is called **good-books-ds** and the associated credentials are **d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0**. Browse the dataset via the [ReactiveSearch API](https://reactivesearch-api-9-3-0.onrender.com) or import your own copy.

**Note:** Clone app option will not work with these credentials here have very narrow access scope (to prevent abuse).

Expand All @@ -70,9 +70,9 @@ import { ReactiveBase } from "@appbaseio/reactivesearch";
function App() {
return (
<ReactiveBase
url="https://appbase-demo-ansible-abxiydt-arc.searchbase.io"
url="https://reactivesearch-api-9-3-0.onrender.com"
app="good-books-ds"
credentials="04717bb076f7:be54685e-db84-4243-975b-5b32ee241d31"
credentials="d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0"
>
{/* Our components will go over here */}
Hello from ReactiveSearch 👋
Expand Down
4 changes: 2 additions & 2 deletions content/docs/reactivesearch/react/result/reactivelist.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@ Example uses:
and: ['CitySensor', 'SearchSensor'],
}}
endpoint={{
url:"https://appbase-demo-ansible-abxiydt-arc.searchbase.io/recipes-demo/_reactivesearch.v3", //mandatory
url:"https://reactivesearch-api-9-3-0.onrender.com/recipes-demo/_reactivesearch", //mandatory
headers:{
// relevant headers
Authorization: 'Basic ZDAzZTZmNWYzM2Q1OjQ5MTI0Njc0LTU1NGUtNDM0My05YWIyLTAwNmIyOTMyZjVjMA=='
},
method: 'POST'
}}
Expand Down
4 changes: 2 additions & 2 deletions content/docs/reactivesearch/react/search/searchbox.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,9 @@ Example uses:
}}
renderNoSuggestion="No suggestions found"
endpoint={{
url:"https://appbase-demo-ansible-abxiydt-arc.searchbase.io/recipes-demo/_reactivesearch.v3", //mandatory
url:"https://reactivesearch-api-9-3-0.onrender.com/recipes-demo/_reactivesearch", //mandatory
headers:{
// relevant headers
Authorization: 'Basic ZDAzZTZmNWYzM2Q1OjQ5MTI0Njc0LTU1NGUtNDM0My05YWIyLTAwNmIyOTMyZjVjMA=='
},
method: 'POST'
}}
Expand Down
20 changes: 10 additions & 10 deletions content/docs/reactivesearch/searchbase/overview/QuickStart.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,16 @@ import { SearchComponent } from '@appbaseio/searchbase';
// Instantiate the `SearchComponent`
const searchComponent = new SearchComponent({
// Elasticsearch index name
index: 'gitxplore-app',
index: 'good-books-ds',
// Appbase credentials
credentials: 'a03a1cb71321:75b6603d-9456-4a5a-af6b-a487b309eb61',
url: 'https://@arc-cluster-appbase-demo-6pjy6z.searchbase.io',
credentials: 'd03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0',
url: 'https://reactivesearch-api-9-3-0.onrender.com',
// Unique identifier for component
id: 'search-component',
// initialize with empty value
value: '',
// Database fields to perform the search
dataField: ['name', 'description', 'name.search', 'fullname', 'owner', 'topics'],
dataField: ['title', 'original_title', 'authors'],
});

// Get the input element
Expand Down Expand Up @@ -118,32 +118,32 @@ import { SearchBase } from '@appbaseio/searchbase';
// Instantiate the `SearchBase`
const searchbase = new SearchBase({
// Elasticsearch index name
index: 'gitxplore-app',
index: 'good-books-ds',
// Appbase credentials
credentials: 'a03a1cb71321:75b6603d-9456-4a5a-af6b-a487b309eb61',
url: 'https://@arc-cluster-appbase-demo-6pjy6z.searchbase.io',
credentials: 'd03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0',
url: 'https://reactivesearch-api-9-3-0.onrender.com',
});

// Register search component => To render the suggestions
const searchComponent = searchbase.register('search-component', {
// pass this prop as true to enable predictive suggestions
enablePredictiveSuggestions: true,
dataField: ['name', 'description', 'name.raw', 'fullname', 'owner', 'topics'],
dataField: ['title', 'original_title', 'authors'],
});

// Register filter component with dependency on search component
const filterComponent = searchbase.register('language-filter', {
// The type property as `term` is to use the Elasticsearch terms aggregations.
type: 'term',
dataField: 'language.keyword',
dataField: 'language_code.keyword',
react: {
and: 'search-component',
},
});

// Register result component with react dependency on search and filter component => To render the results
const resultComponent = searchbase.register('result-component', {
dataField: 'name',
dataField: 'title',
react: {
and: ['search-component', 'language-filter'],
},
Expand Down
10 changes: 5 additions & 5 deletions content/docs/reactivesearch/vue/overview/QuickStart.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ We will demonstrate creating an index using [appbase.io](https://appbase.io) ser

![create an appbase.io app](https://www.dropbox.com/s/qa5nazj2ajaskr6/wky0vrsPPB.gif?raw=1)

**Caption:** For the example that we will build, the app is called **good-books-ds** and the associated read-only credentials are **04717bb076f7:be54685e-db84-4243-975b-5b32ee241d31**. You can browse and export the dataset to JSON or CSV from [here].(https://dejavu.appbase.io/?appname=good-books-ds&url=https://04717bb076f7:be54685e-db84-4243-975b-5b32ee241d31@appbase-demo-ansible-abxiydt-arc.searchbase.io&mode=edit).
**Caption:** For the example that we will build, the app is called **good-books-ds** and the associated credentials are **d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0**. Browse the dataset via the [ReactiveSearch API](https://reactivesearch-api-9-3-0.onrender.com).

**Note:** Clone app option will not work with these credentials here have very narrow access scope (to prevent abuse).

Expand All @@ -116,9 +116,9 @@ We will update our `src/App.vue` file to add the ReactiveBase component.
<template>
<div id="app">
<reactive-base
url="https://appbase-demo-ansible-abxiydt-arc.searchbase.io"
url="https://reactivesearch-api-9-3-0.onrender.com"
app="good-books-ds"
credentials="04717bb076f7:be54685e-db84-4243-975b-5b32ee241d31"
credentials="d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0"
>
<h1>Hello from ReactiveBase 👋</h1>
</reactive-base>
Expand Down Expand Up @@ -248,9 +248,9 @@ Now, we will put all three components together to create the UI view.
<template>
<div id="app">
<reactive-base
url="https://appbase-demo-ansible-abxiydt-arc.searchbase.io"
url="https://reactivesearch-api-9-3-0.onrender.com"
app="good-books-ds"
credentials="04717bb076f7:be54685e-db84-4243-975b-5b32ee241d31"
credentials="d03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0"
>
<search-box
componentId="SearchBox"
Expand Down
4 changes: 2 additions & 2 deletions src/pages/docs/reactivesearch/react/overview/Showcase.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import ShowcaseComponent from '../../../../../components/ShowcaseComponent';

const settings = {
app: 'clone-airbeds',
credentials: '3f7ed293fbe0:47ff004a-4722-49fe-bc48-0ff0286e4de0',
url: 'https://appbase-demo-ansible-abxiydt-arc.searchbase.io',
credentials: 'd03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0',
url: 'https://reactivesearch-api-9-3-0.onrender.com',
enableAppbase: true,
mapKey: 'AIzaSyA9JzjtHeXg_C_hh_GdTBdLxREWdj3nsOU',
mapLibraries: ['places'],
Expand Down
4 changes: 2 additions & 2 deletions src/pages/docs/reactivesearch/vue/overview/Showcase.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ import ShowcaseComponent from '../../../../../components/ShowcaseComponent';

const settings = {
app: 'clone-airbeds',
credentials: '3f7ed293fbe0:47ff004a-4722-49fe-bc48-0ff0286e4de0',
url: 'https://appbase-demo-ansible-abxiydt-arc.searchbase.io',
credentials: 'd03e6f5f33d5:49124674-554e-4343-9ab2-006b2932f5c0',
url: 'https://reactivesearch-api-9-3-0.onrender.com',
enableAppbase: true,
mapKey: 'AIzaSyA9JzjtHeXg_C_hh_GdTBdLxREWdj3nsOU',
theme: {
Expand Down
2 changes: 2 additions & 0 deletions utils/demo-migration/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export/
*.bulk.ndjson
141 changes: 141 additions & 0 deletions utils/demo-migration/MIGRATION-READINESS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
# Docs Migration Readiness Report

**New backend:** `https://reactivesearch-api-9-3-0.onrender.com` (`rs-demo` / `rs-password`)
**Elasticsearch:** Aiven OpenSearch
**Last updated:** 2026-07-07

## Executive summary

| Area | Status |
|------|--------|
| RS API health | ✅ OpenSearch 3.3.2 reachable |
| `good-books-ds` search | ✅ Verified via `_reactivesearch` |
| `recipes-demo` | ⏳ Importing (~17k / 222k on Aiven; see investigation below) |
| Indexes migrated | 5 of 8 complete; 2 importing |
| Docs hostname updates | ~130+ occurrences, ~120 files |
| Playground embeds | ~248 iframes, ~90–120 unique IDs |
| CodeSandbox embeds | ~200+ iframes in ~167 files (external repos) |

## Indexes on Aiven

| Index | Docs | Status |
|-------|------|--------|
| `good-books-ds` | 9,418 | ✅ |
| `clone-airbeds` | 427 | ✅ |
| `earthquakes` | 3,646 | ✅ |
| `docs-demo` | 1,883 | ✅ |
| `good-books` | 180 | ✅ |
| `recipes-demo` | ~17k → 222,286 (10% sample) | ⏳ Import-only running (PID ~99797); export complete (444,572 bulk lines) |
| `best-buy-dataset` | ~8.5k → 114,928 | ⏳ Import-only running (PID ~17522); export complete (229,856 bulk lines) |
| `good-books-authors` | — | ⏭️ Not on source cluster |

## Replace cheatsheet

```
OLD: https://appbase-demo-ansible-abxiydt-arc.searchbase.io
OLD: https://arc-cluster-appbase-demo-6pjy6z.searchbase.io
NEW: https://reactivesearch-api-9-3-0.onrender.com

OLD: /recipes-demo/_reactivesearch.v3
NEW: /good-books-ds/_reactivesearch # interim until recipes-demo migrated
```

## P0 pages updated (2026-07-07)

Backend: `https://reactivesearch-api-9-3-0.onrender.com` / `rs-demo:rs-password`

- `content/docs/reactivesearch/react/overview/quickstart.md`
- `content/docs/reactivesearch/vue/overview/QuickStart.md`
- `content/docs/reactivesearch/searchbase/overview/QuickStart.md`
- `content/docs/reactivesearch/react-searchbox/quickstart.md`
- `src/pages/docs/reactivesearch/react/overview/Showcase.js`
- `src/pages/docs/reactivesearch/vue/overview/Showcase.js`
- `content/docs/reactivesearch/react/search/searchbox.md`
- `content/docs/reactivesearch/react/result/reactivelist.md`
- `content/docs/reactivesearch/react/list/singlelist.md`
- `content/api/javascript/quickstart.md`


| Path | Why |
|------|-----|
| `/docs/reactivesearch/react/overview/quickstart` | React onboarding |
| `/docs/reactivesearch/vue/overview/QuickStart` | Vue onboarding |
| `/docs/reactivesearch/searchbase/overview/QuickStart` | SearchBase entry |
| `/docs/reactivesearch/react-searchbox/quickstart` | SearchBox onboarding |
| `/docs/reactivesearch/react/overview/Showcase` | Live `clone-airbeds` demo |
| `/docs/reactivesearch/react/search/searchbox` | Top component |
| `/docs/reactivesearch/react/result/reactivelist` | Top component + CSB |
| `/docs/reactivesearch/react/list/singlelist` | Facet demo (recipes-demo gap) |
| `/api/javascript/quickstart` | API quickstart |

## P1 playground-heavy pages

- `/docs/search/reactivesearch-api/reference/opensearch` (44 embeds)
- `/docs/search/reactivesearch-api/reference/elasticsearch` (44 embeds)
- `/docs/reactivesearch/atlas-search/search-examples-with-react`
- `/docs/reactivesearch/autocomplete-plugin/guides` (needs `best-buy-dataset`)
- `/docs/pipelines/how-to/open-ai`
- `/docs/analytics/popular-recent-suggestions`
- `/api/examples/rest`

**Note:** `play.reactivesearch.io` backends live in saved playground state, not iframe URLs alone.


## Import investigation (2026-07-07 ~15:00 IST)

**What happened**

- Exports are **complete** on disk: `recipes-demo` 222,286 docs (162 MB NDJSON), `best-buy-dataset` 114,928 docs (759 MB).
- Earlier full runs **did not finish**: `best-buy-dataset` export died at ~20k docs with `ConnectionResetError` from the source cluster; initial wrapper logs show start only (no completion).
- Index create on Aiven previously failed on private OpenSearch settings until `build_create_payload()` stripped `index.history` (and related keys). Current script includes that fix.
- **`--force` import does not delete** an existing index; it bulk-loads into it (same `_id` overwrites). The drop from “~50%” to ~5k is explained by **import-only restarts after the destination index was missing/recreated** (log: `creating best-buy-dataset…` at 09:17 UTC) and fresh bulk from line 1—not by a silent partial crash of the current run.
- **best-buy** had **four** import-only starts (09:13, 09:17, 09:19, 09:22 UTC); only one Python importer per index is active now. No `bulk errors` in `logs/`.

**Current Aiven `_count` (rising)**

| Index | Count | Target | Notes |
|-------|------:|-------:|-------|
| `recipes-demo` | ~16.9k | 222,286 | Import-only since ~09:13 UTC |
| `best-buy-dataset` | ~8.5k | 114,928 | Import-only since ~09:22 UTC (slower bulk) |

**Processes**

- `migrate-demo-indexes.py --import-only --force` running for both indexes (no `run-migration.sh` wrapper on the active PIDs).
- **Do not start additional import-only jobs** until these finish (avoids competing bulk and confusing counts).

**ETA (rough)**

- `recipes-demo`: ~1–1.5 h at observed ~50–100 docs/s.
- `best-buy-dataset`: ~2–3 h (larger docs, slower observed rate).

## Migration tooling

- `migrate-demo-indexes.py` — export/import; strips private settings (`history.uuid`, etc.)
- `run-migration.sh` — logged wrapper (`logs/{index}-{timestamp}.log`, redacted URLs)
- Wrapper jobs: `logs/best-buy-dataset-20260707T073843Z.log`, `logs/recipes-demo-20260707T073843Z.log`

## Migration order

1. Create per-index read-only RS credentials (replace root `rs-demo` in public docs)
2. Configure CORS on Render for docs, CodeSandbox, playground, storybook origins
3. Bulk-replace hostnames in Docs + credentials
4. Retarget `recipes-demo` demos → `good-books-ds` OR migrate subset
5. Finish `best-buy-dataset` migration
6. Update external repos: `reactivesearch`, `searchbox`, `autocomplete-suggestions-plugin`
7. Bulk-update `play.reactivesearch.io` saved states
8. P0 → P1 → P2 manual test pass

## External repos (not Docs)

- `appbaseio/reactivesearch` — web/vue/maps examples + storybook
- `appbaseio/searchbox` — react-searchbox examples
- `appbaseio/autocomplete-suggestions-plugin` — blocked on `best-buy-dataset`
- `opensource.appbase.io/playground`, `reactivesearch-vue-playground.netlify.app`

## recipes-demo options

| Option | Tradeoff |
|--------|----------|
| Migrate ~10k doc subset | Enough for facet demos |
| Retarget demos → `good-books-ds` | Fastest; different field schema |
| Static screenshots | Lowest effort |
Loading