Skip to content
Back to top
View this page
Edit this page

# NoSQL databases

The following NoSQL database are supported:

- Valkey Server

- MongoDB / PyMongo

All of the engines above are just commented out in the settings.yml, as you have to set various options and install dependencies before using them.

By default, the engines use the `key-value` template for displaying results / see simple theme. If you are not satisfied with the original result layout, you can use your own template, set `result_template` attribute to `{template_name}` and place the templates at:

    searx/templates/{theme_name}/result_templates/{template_name}

Furthermore, if you do not wish to expose these engines on a public instance, you can still add them and limit the access by setting `tokens` as described in section Private Engines (tokens).

## Extra Dependencies

For using Valkey Server or MongoDB / PyMongo you need to install additional packages in Python’s Virtual Environment of your SearXNG instance. To switch into the environment (Install SearXNG & dependencies) you can use utils/searxng.sh:

    $ sudo utils/searxng.sh instance cmd bash
    (searxng-pyenv)$ pip install ...

## Configure the engines

NoSQL database are used for storing arbitrary data without first defining their structure.

### Valkey Server

Valkey is an open source (BSD licensed), in-memory data structure (key value based) store. Before configuring the `valkey_server` engine, you must install the dependency valkey.

#### Configuration

Select a database to search in and set its index in the option `db`. You can either look for exact matches or use partial keywords to find what you are looking for by configuring `exact_match_only`.

#### Example

Below is an example configuration:

    # Required dependency: valkey

    - name: myvalkey
      shortcut : rds
      engine: valkey_server
      exact_match_only: false
      host: '127.0.0.1'
      port: 6379
      enable_http: true
      password: ''
      db: 0

#### Implementations

### MongoDB / PyMongo

MongoDB is a document based database program that handles JSON like data. Before configuring the `mongodb` engine, you must install the dependency pymongo.

#### Configuration

In order to query MongoDB, you have to select a `database` and a `collection`. Furthermore, you have to select a `key` that is going to be searched. MongoDB also supports the option `exact_match_only`, so configure it as you wish.

#### Example

Below is an example configuration for using a MongoDB collection:

    # MongoDB engine
    # Required dependency: pymongo

    - name: mymongo
      engine: mongodb
      shortcut: md
      exact_match_only: false
      host: '127.0.0.1'
      port: 27017
      enable_http: true
      results_per_page: 20
      database: 'business'
      collection: 'reviews'  # name of the db collection
      key: 'name'            # key in the collection to search for

#### Implementations