Using Meilisearch With The Python Client

September - 2021

Install with

pip3 install meilisearch

You'll also need an instance of meilisearch running which should be started with a master key (sample-master-key in these examples)


Get the keys with:

#!/usr/bin/env python3 

import meilisearch 


initial_client = meilisearch.Client(
                        'http://127.0.0.1:7700', 
                        'sample-master-key'
                    )

keys = initial_client.get_keys()

print(keys) 

Which will print out something like:

{
  'private': 'd78d875b6d7...', 
  'public': '8778c642423...'
}

Use the private key to create the index like this:

#!/usr/bin/env python3 

import meilisearch 


private_key = '123412341234123412341234123412341234'

client = meilisearch.Client(
            'http://127.0.0.1:7700', 
            private_key
          )

index = client.get_or_create_index(
            'sentences', 
            { 'primaryKey':'id' }
        ) 

documents = [
        { 
            'id': '9a27', 
            'sentence': 'The quick brown fox jumps over the lazy dog.' 
        }, 
        { 
            'id': 'a503', 
            'sentence': 'There is a fine hard tang in salty air.' 
        },
        { 
            'id': 'aed1', 
            'sentence': 'Crouch before you jump or miss the mark.' 
        }
    ]

index.add_documents(documents)
  • NOTE: ids might need to be numbers

(It looks like you can add a document with the same id multiple times and it'll just overwrite each time)

Then, search using the public key

#!/usr/bin/env python3

import meilisearch


public_key = '1234123412341234123412341234123412341234'

client = meilisearch.Client(
            'http://127.0.0.1:7700', 
            public_key
        )

index = client.index('sentences')

results = index.search('jump')

print(results) 

Returns something like:

{
	'hits': [{
		'id': 'aed1',
		'sentence': 'Crouch before you jump or miss the mark.'
	}, {
		'id': '9a27',
		'sentence': 'The quick brown fox jumps over the lazy dog.'
	}],
	'nbHits': 2,
	'exhaustiveNbHits': False,
	'query': 'jump',
	'limit': 20,
	'offset': 0,
	'processingTimeMs': 0
}

Note that when you add documents to the index a update object is returned. You can use it to check the status of the update. You use it by doing this:

update_object = index.add_documents(documents)

print(index.get_update_status(update_object['updateId']))

instead of this from the original example:

index.add_documents(documents)