Le SDK Meilisearch Python fournit à la fois un client asynchrone et synchronisé pour l'API Meilisearch.
Le client à utiliser dépend de votre cas d'utilisation. Si la base de code avec laquelle vous travaillez utilise asyncio, par exemple si vous utilisez FastAPI, choisissez AsyncClient
, sinon choisissez sync Client
. La fonctionnalité des deux clients est la même, la différence étant que AsyncClient
fournit des méthodes asynchrones et utilise AsyncIndex
avec ses propres méthodes asynchrones supplémentaires. D'un autre côté, Client
fournit des méthodes de blocage et utilise l' Index
avec ses propres méthodes de blocage.
L'utilisation d'un environnement virtuel est recommandée pour l'installation de ce package. Une fois l'environnement virtuel créé et activé, installez le package avec :
pip install meilisearch-python-sdk
Il existe plusieurs façons d’exécuter Meilisearch. Choisissez celui qui convient le mieux à votre cas d'utilisation, puis démarrez le serveur.
Comme exemple d'utilisation de Docker :
docker pull getmeili/meilisearch:latest
docker run -it --rm -p 7700:7700 getmeili/meilisearch:latest ./meilisearch --master-key=masterKey
from meilisearch_python_sdk import AsyncClient
async with AsyncClient ( 'http://127.0.0.1:7700' , 'masterKey' ) as client :
index = client . index ( "books" )
documents = [
{ "id" : 1 , "title" : "Ready Player One" },
{ "id" : 42 , "title" : "The Hitchhiker's Guide to the Galaxy" },
]
await index . add_documents ( documents )
from meilisearch_python_sdk import Client
client = Client ( 'http://127.0.0.1:7700' , 'masterKey' )
index = client . index ( "books" )
documents = [
{ "id" : 1 , "title" : "Ready Player One" },
{ "id" : 42 , "title" : "The Hitchhiker's Guide to the Galaxy" },
]
index . add_documents ( documents )
Le serveur renverra un identifiant de mise à jour qui pourra être utilisé pour obtenir l'état des mises à jour. Pour ce faire, vous enregistrerez la réponse résultant de l'ajout des documents à une variable, ce sera un objet UpdateId
, et vous l'utiliserez pour vérifier l'état des mises à jour.
update = await index . add_documents ( documents )
status = await client . index ( 'books' ). get_update_status ( update . update_id )
update = index . add_documents ( documents )
status = client . index ( 'books' ). get_update_status ( update . update_id )
search_result = await index . search ( "ready player" )
search_result = index . search ( "ready player" )
SearchResults (
hits = [
{
"id" : 1 ,
"title" : "Ready Player One" ,
},
],
offset = 0 ,
limit = 20 ,
nb_hits = 1 ,
exhaustive_nb_hits = bool ,
facets_distributionn = None ,
processing_time_ms = 1 ,
query = "ready player" ,
)
Des informations sur les paramètres peuvent être trouvées dans la section Paramètres de recherche de la documentation.
await index . search (
"guide" ,
attributes_to_highlight = [ "title" ],
filters = "book_id > 10"
)
index . search (
"guide" ,
attributes_to_highlight = [ "title" ],
filters = "book_id > 10"
)
SearchResults (
hits = [
{
"id" : 42 ,
"title" : "The Hitchhiker's Guide to the Galaxy" ,
"_formatted" : {
"id" : 42 ,
"title" : "The Hitchhiker's Guide to the <em>Galaxy</em>"
}
},
],
offset = 0 ,
limit = 20 ,
nb_hits = 1 ,
exhaustive_nb_hits = bool ,
facets_distributionn = None ,
processing_time_ms = 5 ,
query = "galaxy" ,
)
Les benchmarks suivants comparent cette bibliothèque à la bibliothèque officielle Meilisearch Python. Notez que tous les gains de performances constatés avec AsyncClient
sont obtenus en tirant parti d'asyncio. Cela signifie que si votre code ne profite pas de l'asyncio ou s'il ne bloque pas la boucle d'événements, les gains ici ne seront pas visibles et les performances entre les clients seront très similaires.
Ce test compare le temps nécessaire pour envoyer 1 million de documents par lots de 1 000 au serveur Meilisearch pour indexation (le plus bas est le mieux). Le temps ne prend pas en compte le temps nécessaire à Meilisearch pour indexer les documents, car cela ne fait pas partie des fonctionnalités de la bibliothèque.
Ce test compare le temps nécessaire pour effectuer 1 000 recherches (le plus bas est le mieux)
Prashanth Rao a effectué des tests indépendants et a constaté que ce client asynchrone était environ 30 % plus rapide que le client de synchronisation pour l'ingestion de données. Vous pouvez trouver un bon compte rendu des résultats comment il les a testés dans son article de blog.
pytest-meilisearch est un plugin pytest qui peut vous aider à tester votre code. Il fournit une grande partie du code de plaque chauffante dont vous aurez besoin.
Consultez nos documents pour la documentation complète.
Les contributions à ce projet sont les bienvenues. Si vous souhaitez contribuer, veuillez consulter notre guide de contribution