Skip to main content

The python client for MeiliSearch API.

Project description

MeiliSearch Python Client

PyPI version Licence test Status

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

With pip in command line:

pip 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 --api-key=apiKey

🚀 Getting started

Add documents

import meilisearch
client = meilisearch.Client("http://127.0.0.1:7700", "apiKey")
indexes = client.get_index('index_uid')

documents = [
  { "id": 123,  "title": 'Pride and Prejudice' },
  { "id": 456,  "title": 'Le Petit Prince' },
  { "id": 1,    "title": 'Alice In Wonderland' },
  { "id": 1344, "title": 'The Hobbit' },
  { "id": 4,    "title": 'Harry Potter and the Half-Blood Prince' },
  { "id": 42,   "title": 'The Hitchhiker\'s Guide to the Galaxy' }
]

index.add_documents(documents) # asynchronous

⚠️ The method add_documents is asynchronous.
It means that your new documents addition will be added to the stack of actions. It may not be instantly processed. Check for the updates tracking.

Search in index

# MeiliSearch is typo-tolerant:
index.search({
  "q": 'hary pottre'
})

Output:

{
  "hits" => [{
    "id" => 4,
    "title" => "Harry Potter and the Half-Blood Prince"
  }],
  "offset" => 0,
  "limit" => 20,
  "processingTimeMs" => 1,
  "query" => "hary pottre"
}

Create an index

If you don't have any index yet, you can create one with:

index = client.create_index(name='Books')

🎬 Examples

You can check out the API documentation.

Indexes

Create an index

# Create an index
client.create_index(name='Books')
# Create an index with a specific uid (uid must be unique)
client.create_index(name= 'Books', uid= 'books')
# Create an index with a schema
schema = {
  "id":    ["displayed", "indexed", "identifier"],
  "title": ["displayed", "indexed"]
}
client.create_index(name= 'Books', schema= schema)

List all indexes

client.get_indexes()

Get an index object

index = client.get_index(uid="books")

Documents

Fetch documents

# Get one document
index.document(123)
# Get documents by batch
index.documents({ "offset": 10 , "limit": 20 })

Add documents

index.add_documents([{ "id": 2, "title": 'Madame Bovary' }])

Response:

{
    "updateId": 1
}

With this updateId you can track your operation status.

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
# Parameter: the updateId got after an asynchronous request (e.g. documents addition)
index.get_update(1)
# Get all updates
index.get_updates()

Search

Basic search

index.search({
  "q": "prince"
})
{
    "hits": [
        {
            "id": 456,
            "title": "Le Petit Prince"
        },
        {
            "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({
  "q": "prince",
  "limit": 1
})
{
    "hits": [
        {
            "id": 456,
            "title": "Le Petit Prince"
        }
    ],
    "offset": 0,
    "limit": 1,
    "processingTimeMs": 10,
    "query": "prince"
}

🤖 Compatibility with MeiliSearch

This package works for MeiliSearch v0.8.x.

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

meilisearch-0.8.1.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meilisearch-0.8.1-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file meilisearch-0.8.1.tar.gz.

File metadata

  • Download URL: meilisearch-0.8.1.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.5

File hashes

Hashes for meilisearch-0.8.1.tar.gz
Algorithm Hash digest
SHA256 5dd32d11ea9263d416e96296083ffaaf094b4091de72c0488cc4880272bf3203
MD5 7afaaba775f3d0d1d01a039e4625f86f
BLAKE2b-256 9fa12212658ce9aa53fbdccf8b54b928412deb32e43b9efa1f4d960859a6dc16

See more details on using hashes here.

File details

Details for the file meilisearch-0.8.1-py3-none-any.whl.

File metadata

  • Download URL: meilisearch-0.8.1-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.7.5

File hashes

Hashes for meilisearch-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 24a4c909743bc53aa6db59ccc417a204d6f452f804a8a68c5c33bf4a9189cc1a
MD5 f086455efb655f0c90832b35beafbaab
BLAKE2b-256 e71a718c94a883e7447e8ea89ec6582d1cedd34c89ea167e763b8c2f31e79ba1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page