Skip to main content

Index and search records using Algolia.

Project description

kinto-algolia forwards the records to Algolia and provides a /search endpoint to query the indexed data.


pip install kinto-algolia


In the Kinto settings:

kinto.includes = <s>kinto_algolia</s>
kinto.algolia.application_id = <s>YourApplicationID</s>
kinto.algolia.api_key = <s>YourAPIKey</s>

# List of buckets/collections to show:
kinto.algolia.resources = <s>/buckets/chefclub-v2</s>

By default, indices names are prefixed with kinto-. You change this with:

kinto.algolia.index_prefix = <s>myprefix</s>


Create a new record:

$ echo '{"data":
    {"id": "1008855320",
     "last_modified": 1523349594783,
     "title": "kinto",
     "description": "A database for the web",
     "_geoloc": {"lng": -73.778925, "lat": 40.639751}}' | \
    http POST http://localhost:8888/v1/buckets/example/collections/notes/records \
        --auth token:alice-token

It should now be possible to search for it using the Algolia API.

For example, using a quick querystring search:

$ http "http://localhost:8888/v1/buckets/example/collections/notes/search?query=kinto+database" \
    --auth token:alice-token

Or an advanced search using request body:

$ echo '{"insideBoundingBox": "46.650828100116044,7.123046875,45.17210966999772,1.009765625"}' | \
    http POST http://localhost:8888/v1/buckets/example/collections/notes/search \
        --auth token:alice-token
HTTP/1.1 200 OK
Access-Control-Expose-Headers: Retry-After, Content-Length, Alert, Backoff
Content-Length: 333
Content-Type: application/json; charset=UTF-8
Date: Wed, 20 Jan 2016 12:02:05 GMT
Server: waitress

  "hits": [
       "_geoloc": {
           "lat": 40.639751,
           "lng": -73.778925
       "_highlightResult": {
           "title": {
               "matchLevel": "none",
               "matchedWords": [],
               "value": "Kinto"
       "last_modified": 1523349594783,
       "title": "Kinto",
       "description": "A database for the web",
       "objectID": "1008855320"
  "hitsPerPage": 1000,
  "nbHits": 1,
  "nbPages": 1,
  "page": 0,
  "params": "insideBoundingBox=42.124710287101955%2C9.335632324218752%2C41.47360232634395%2C14.403076171875002&hitsPerPage=10000&query=",
  "processingTimeMS": 2,
  "query": ""

Custom index settings

By default, Algolia infers the data types from the indexed records.

But it’s possible to define the index mappings (ie. schema) from the collection metadata, in the algolia:settings property:

$ echo '{
  "attributesToIndex": ["title", "description"]
}' | http PATCH "http://localhost:8888/v1/buckets/blog/collections/builds" \
    --auth token:admin-token --verbose

Refer to Algolia official documentation for more information about settings.

Running the tests

$ make tests


1.0.0 (2019-02-08)

  • Add support for collections whitelist. (#6)

0.2.0 (2018-07-18)

Bug fixes

  • Update algolia settings.

0.1.1 (2018-06-06)

Bug fixes

  • Fix reindex command.

0.1.0 (2018-04-12)

New features

  • Flush indices when server is flushed

  • Perform insertions and deletion in bulk for better efficiency

  • Add heartbeat

  • Delete indices when buckets and collections are deleted

  • Support quick search from querystring

  • Support defining mapping from the algolia:settings property in the collection metadata

Bug fixes

  • Only index records if the storage transaction is committed

  • Do not allow to search if no read permission on collection or bucket

  • Fix empty results response when plugin was enabled after collection creation

Internal changes

  • Create index when collection is created

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kinto-algolia-1.0.0.tar.gz (15.1 kB view hashes)

Uploaded source

Built Distribution

kinto_algolia-1.0.0-py3-none-any.whl (10.8 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page