Meilisearch Python SDK fornece um cliente assíncrono e sincronizado para a API Meilisearch.
Qual cliente usar depende do seu caso de uso. Se a base de código com a qual você está trabalhando usa asyncio, por exemplo, se você estiver usando FastAPI, escolha AsyncClient
, caso contrário, escolha sync Client
. A funcionalidade dos dois clientes é a mesma, a diferença é que o AsyncClient
fornece métodos assíncronos e usa o AsyncIndex
com seus próprios métodos assíncronos adicionais. Por outro lado, Client
fornece métodos de bloqueio e utiliza o Index
com seus próprios métodos de bloqueio.
O uso de um ambiente virtual é recomendado para instalar este pacote. Depois que o ambiente virtual for criado e ativado, instale o pacote com:
pip install meilisearch-python-sdk
Existem várias maneiras de executar o Meilisearch. Escolha aquele que funciona melhor para o seu caso de uso e inicie o servidor.
Como exemplo de uso do 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 )
O servidor retornará um ID de atualização que pode ser usado para obter o status das atualizações. Para fazer isso, você salvaria a resposta do resultado da adição dos documentos a uma variável, este será um objeto UpdateId
, e usá-lo-ia para verificar o status das atualizações.
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" ,
)
Informações sobre os parâmetros podem ser encontradas na seção de parâmetros de pesquisa da documentação.
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" ,
)
Os benchmarks a seguir comparam esta biblioteca com a biblioteca oficial Meilisearch Python. Observe que todos os ganhos de desempenho observados com o AsyncClient
são alcançados aproveitando-se do asyncio. Isso significa que se o seu código não estiver aproveitando o asyncio ou não bloquear o loop de eventos, os ganhos aqui não serão vistos e o desempenho entre os clientes será muito semelhante.
Este teste compara quanto tempo leva para enviar 1 milhão de documentos em lotes de 1 mil ao servidor Meilisearch para indexação (quanto menor, melhor). O tempo não leva em consideração quanto tempo o Meilisearch leva para indexar os documentos, pois isso está fora da funcionalidade da biblioteca.
Este teste compara quanto tempo leva para completar 1.000 pesquisas (quanto menor, melhor)
Prashanth Rao fez alguns testes independentes e descobriu que esse cliente assíncrono é cerca de 30% mais rápido que o cliente de sincronização para ingestão de dados. Você pode encontrar um bom resumo dos resultados de como ele os testou em sua postagem no blog.
pytest-meilisearch é um plugin pytest que pode ajudar a testar seu código. Ele fornece grande parte do código padrão de que você precisa.
Veja nossos documentos para a documentação completa.
Contribuições para este projeto são bem-vindas. Se você estiver interessado em contribuir, consulte nosso guia de contribuição