Meilisearch Python SDK proporciona un cliente asíncrono y sincronizado para la API de Meilisearch.
Qué cliente utilizar depende de su caso de uso. Si la base de código con la que está trabajando usa asyncio, por ejemplo, si está usando FastAPI, elija AsyncClient
; de lo contrario, elija sync Client
. La funcionalidad de los dos clientes es la misma, la diferencia es que AsyncClient
proporciona métodos asíncronos y utiliza AsyncIndex
con sus propios métodos asíncronos adicionales. Por otro lado, Client
proporciona métodos de bloqueo y utiliza el Index
con sus propios métodos de bloqueo.
Se recomienda utilizar un entorno virtual para instalar este paquete. Una vez creado y activado el entorno virtual, instale el paquete con:
pip install meilisearch-python-sdk
Hay varias formas de ejecutar Meilisearch. Elija el que funcione mejor para su caso de uso y luego inicie el servidor.
Como ejemplo para usar 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 )
El servidor devolverá una identificación de actualización que se puede utilizar para obtener el estado de las actualizaciones. Para hacer esto, debe guardar la respuesta resultante al agregar los documentos a una variable, este será un objeto UpdateId
y usarlo para verificar el estado de las actualizaciones.
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" ,
)
La información sobre los parámetros se puede encontrar en la sección de parámetros de búsqueda de la documentación.
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" ,
)
Los siguientes puntos de referencia comparan esta biblioteca con la biblioteca oficial de Meilisearch Python. Tenga en cuenta que todas las mejoras de rendimiento observadas con AsyncClient
se logran aprovechando asyncio. Esto significa que si su código no aprovecha asyncio o no bloquea el bucle de eventos, las ganancias aquí no se verán y el rendimiento entre los clientes será muy similar.
Esta prueba compara cuánto tiempo lleva enviar 1 millón de documentos en lotes de 1.000 al servidor de Meilisearch para su indexación (cuanto menos, mejor). El tiempo no tiene en cuenta cuánto tarda Meilisearch en indexar los documentos, ya que eso está fuera de la funcionalidad de la biblioteca.
Esta prueba compara cuánto tiempo lleva completar 1000 búsquedas (cuanto menos, mejor)
Prashanth Rao realizó algunas pruebas independientes y descubrió que este cliente asíncrono era aproximadamente un 30 % más rápido que el cliente de sincronización para la ingesta de datos. Puede encontrar una buena reseña de los resultados sobre cómo los probó en la publicación de su blog.
pytest-meilisearch es un complemento de pytest que puede ayudar a probar su código. Proporciona gran parte del código de placa de caldera que necesitará.
Consulte nuestros documentos para obtener la documentación completa.
Las contribuciones a este proyecto son bienvenidas. Si está interesado en contribuir, consulte nuestra guía de contribución.