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:
By default, indices names are prefixed with kinto-
. You change this with:
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": ""
}
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.
$ make tests