The python client for MeiliSearch API.
Project description
MeiliSearch Python Client
The python client for MeiliSearch API.
MeiliSearch provides an ultra relevant and instant full-text search. Our solution is open-source and you can check out our repository here.
Here is the MeiliSearch documentation 📖
Table of Contents
- 🔧 Installation
- 🚀 Getting started
- 🎬 Examples
- ⚙️ Development Workflow
- 🤖 Compatibility with MeiliSearch
🔧 Installation
With pip3
in command line:
$ pip3 install meilisearch
Run MeiliSearch
There are many easy ways to download and run a MeiliSearch instance.
For example, if you use Docker:
$ docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest --master-key=masterKey
NB: you can also download MeiliSearch from Homebrew or APT.
🚀 Getting started
Add documents
import meilisearch
client = meilisearch.Client('http://127.0.0.1:7700', 'masterKey')
index = client.create_index(uid='books') # If your index does not exist
index = client.get_index('books') # If you already created your index
documents = [
{ 'book_id': 123, 'title': 'Pride and Prejudice' },
{ 'book_id': 456, 'title': 'Le Petit Prince' },
{ 'book_id': 1, 'title': 'Alice In Wonderland' },
{ 'book_id': 1344, 'title': 'The Hobbit' },
{ 'book_id': 4, 'title': 'Harry Potter and the Half-Blood Prince' },
{ 'book_id': 42, 'title': 'The Hitchhiker\'s Guide to the Galaxy' }
]
index.add_documents(documents) # => { "updateId": 0 }
With the updateId
, you can check the status (processed
or failed
) of your documents addition thanks to this method.
Search in index
# MeiliSearch is typo-tolerant:
index.search('harry pottre')
Output:
{
"hits" => [{
"book_id" => 4,
"title" => "Harry Potter and the Half-Blood Prince"
}],
"offset" => 0,
"limit" => 20,
"processingTimeMs" => 1,
"query" => "harry pottre"
}
🎬 Examples
You can check out the API documentation.
Indexes
Create an index
# Create an index
client.create_index(uid='books')
# Create an index and give the primary-key
client.create_index(uid='books', primary_key='book_id')
List all indexes
client.get_indexes()
Get an index object
index = client.get_index('books')
Documents
Fetch documents
# Get one document
index.get_document(123)
# Get documents by batch
index.get_documents({ 'offset': 10 , 'limit': 20 })
Add documents
index.add_documents([{ 'book_id': 2, 'title': 'Madame Bovary' }])
Response:
{
"updateId": 1
}
This updateId
allows you to track the current update.
Delete documents
# Delete one document
index.delete_document(2)
# Delete several documents
index.delete_documents([1, 42])
# Delete all documents
index.delete_all_documents()
Update status
# Get one update status
# Parameter: the updateId got after an asynchronous request (e.g. documents addition)
index.get_update_status(1)
# Get all updates status
index.get_all_update_status()
Search
Basic search
index.search('prince')
{
"hits": [
{
"book_id": 456,
"title": "Le Petit Prince"
},
{
"book_id": 4,
"title": "Harry Potter and the Half-Blood Prince"
}
],
"offset": 0,
"limit": 20,
"processingTimeMs": 13,
"query": "prince"
}
Custom search
All the supported options are described in this documentation section.
response = index.search('prince', { 'limit': 1 })
{
"hits": [
{
"book_id": 456,
"title": "Le Petit Prince"
}
],
"offset": 0,
"limit": 1,
"processingTimeMs": 10,
"query": "prince"
}
⚙️ Development Workflow
If you want to contribute, this section describes the steps to follow.
Thank you for your interest in a MeiliSearch tool! ♥️
Install dependencies
$ pipenv install --dev
Tests and Linter
Each PR should pass the tests and the linter to be accepted.
# Tests
$ docker run -d -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --master-key=masterKey --no-analytics
$ pipenv run pytest meilisearch
# Linter
$ pipenv run pylint meilisearch
Release
MeiliSearch tools follow the Semantic Versioning Convention.
You must do a PR modifying the file setup.py
with the right version.
version="X.X.X"
Once the changes are merged on master
, in your terminal, you must be on the master
branch and push a new tag with the right version:
$ git checkout master
$ git pull origin master
$ git tag vX.X.X
$ git push --tag origin master
A GitHub Action will be triggered and push the new gem on RubyGems.
🤖 Compatibility with MeiliSearch
This package works for MeiliSearch >=v0.10
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for meilisearch-0.10.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce74e30201153fc5fe32910961fb35279abbf942cdfd18540fc0687b752f3425 |
|
MD5 | 198c581b38e9b5eef752dea2a4cc7e9d |
|
BLAKE2b-256 | 164ac8156fb6f94b67aeaa252db8fcb0cca27df9db0777550016a44c8277a75e |