React UI components for Elasticsearch.
v2 of reactivesearch
is here 🍾. Go read how to build an e-commerce search UI on codeburst.
Get our designer templates for sketch - Download sketch file
- Reactive Search: Intro
- Features
- Component Playground
- Live Examples
- Installation
- Getting Started
- Docs Manual
- Developing Locally
- Other Projects You Might Like
ReactiveSearch is a React UI components library for Elasticsearch. It has 25+ components for Lists, Dropdowns, RangeSliders, DataSearch, MultiLevelMenu, Calendars, Feeds, RatingsFilter, ResultCard and ResultList.
The library is conceptually divided into two parts:
- Sensor components and
- Actuator components.
Each sensor component is purpose built for applying a specific filter on the data. For example:
- A
SingleList
sensor component applies an exact match filter based on the selected item. - A
RangeSlider
component applies a numeric range query based on the values selected from the UI. - A
DataSearch
component applies a suggestions and search query based on the search term typed by the user.
Sensor components can be configured to create a combined query context and render the matching results via an actuator component.
ReactiveSearch primarily comes with two actuators: ResultCard
and ResultList
. ResultCard displays the results in a card interface whereas ResultList displays them in a list. Both provide built-in support for pagination and infinite scroll views.
Besides these, the library also provides low level actuators (ReactiveComponent and ReactiveList) to render in a more customized fashion.
- The sensor / actuator design pattern allows creating complex UIs where any number of sensors can be chained together to reactively update an actuator (or even multiple actuators).
- The library handles the transformation of the UI interactions into database queries. You only need to include the components and associate each with a DB field.
- Built in live updates - Actuators can be set to update results even when the underlying data changes in the DB.
- Comes with a cleanly namespaced CSS classes API that allows extending built-in styles without hassle.
- Is themable via
ThemeProvider
.
- One step installation with npm install @appbaseio/reactivesearch,
- A UMD build that works directly in the browser. Installation steps here,
- Styled and scoped components that can be easily extended,
- See the reactivesearch starter app.
Try the live component playground at playground. Look out for the knobs section in the playground part of the stories to tweak each prop and see the effects.
A set of live demos inspired by real world apps, built with ReactiveSearch.
- demos/airbeds - An airbnb-like booking search experience.
- demos/technews - A full-text search app on the Hacker News dataset.
- demos/gitxplore - Explore all the popular Github repositories.
- demos/productsearch - Filtered feed of products based on a small Product Hunt dataset.
- demos/booksearch - An book search app based on a goodbooks dataset.
- demos/ecommerce - An e-commerce car store app.
You can check all of them on the examples page.
Installing ReactiveSearch is just one command.
npm install @appbaseio/reactivesearch
You can also read about it here.
Follow the getting started guide to build a Hello Search! app from the official docs here.
The official docs for the library are at https://opensource.appbase.io/reactive-manual.
The components are divided into four sections:
- Generic UI components are at reactive-manual/base-components.
- List based UI components are at reactive-manual/list-components.
- Range based UI components are at reactive-manual/range-components.
- Search UI components are at reactive-manual/search-components.
- Result components are at reactive-manual/result-components.
- Clone the repo
git clone https://github.com/appbaseio/reactivesearch.git
-
cd
into the project directory -
Checkout the
dev
branch (should be default) -
fetch the submodules. In case you don't have
ssh
setup for github, change the URLs in.gitmodules
to usehttps
instead
git submodule init
git submodule sync
git submodule update --remote
- The submodules will be fetched into
/packages
. Defaults todev
in/packages/playground
andmaster
in/packages/reactivecore
.
-
ReactiveSearch Dashboard All your Reactive Search related apps (created via interactive tutorial, shared by others, etc.) can be accessed from here.
-
ReactiveMaps is a similar project to Reactive Search that allows building realtime maps easily.
-
appbase-js While building search UIs is dandy with Reactive Search, you might also need to add some input forms. appbase-js comes in handy there.
-
dejavu allows viewing raw data within an appbase.io (or Elasticsearch) app. Soon to be released feature: An ability to import custom data from CSV and JSON files, along with a guided walkthrough on applying data mappings.
-
mirage ReactiveSearch components can be extended using custom Elasticsearch queries. For those new to Elasticsearch, Mirage provides an intuitive GUI for composing queries.