️ Este cliente está obsoleto️ A partir da versão 7.10.0 do Enterprise Search, estamos direcionando os usuários para o novo cliente Python do Enterprise Search e descontinuando esse cliente.
Este cliente será compatível com todas as liberações do Enterprise Search 7.x, mas não será compatível com as liberações 8.x. Nosso esforço de desenvolvimento neste projeto será limitado a correções de bugs. Todas as melhorias futuras serão focadas no Enterprise Search Python Client.
Obrigado! - Elástico
Um cliente Python próprio para criar experiências de pesquisa excelentes e relevantes com o Elastic App Search.
Para instalar o cliente, use pip:
python - m pip install elastic - app - search
Você também pode baixar o código-fonte do projeto e executar::
python setup . py install
Este cliente é versionado e lançado junto com o App Search.
Para garantir a compatibilidade, use a versão mais recente desta biblioteca na versão principal da implementação correspondente do App Search.
Por exemplo, para App Search 7.3
, use 7.3
desta biblioteca ou superior, mas não 8.0
.
Se você estiver usando a versão SaaS disponível em swifttype.com do App Search, deverá usar a versão 7.5.x do cliente.
O uso desse cliente pressupõe que você já tenha uma instância do Elastic App Search instalada e em execução.
O cliente pode ser instanciado usando os parâmetros base_endpoint
, api_key
e use_https
:
>> > from elastic_app_search import Client
>> > client = Client (
base_endpoint = 'localhost:3002/api/as/v1' ,
api_key = 'private-mu75psc5egt9ppzuycnc2mc3' ,
use_https = False
)
Notas:
A [api_key]
autentica solicitações para a API. Você pode usar qualquer tipo de chave com o cliente, porém cada uma tem um escopo diferente. Para mais informações sobre chaves, confira a documentação.
O base_endpoint
deve excluir o protocolo e incluir o prefixo api/as/v1
. Normalmente, isso pode ser encontrado na guia Credenciais no painel do App Search.
Defina use_https
como True
ou False
dependendo de como seu servidor está configurado. Muitas vezes será False
quando executado em desenvolvimento em localhost
e True
para ambientes de produção.
Veja a seguir um exemplo de configuração do Elastic Cloud:
>> > from elastic_app_search import Client
>> > client = Client (
base_endpoint = '77bf13bc2e9948729af339a446b06ddcc.app-search.us-east-1.aws.found.io/api/as/v1' ,
api_key = 'private-mu75psc5egt9ppzuycnc2mc3' ,
use_https = True
)
Ao usar a versão SaaS disponível em swiftype.com do App Search, você pode configurar o cliente usando seu host_identifier
em vez do parâmetro base_endpoint
. O host_identifier
pode ser encontrado no menu Credenciais.
>> > from elastic_app_search import Client
>> > host_identifier = 'host-c5s2mj'
>> > api_key = 'private-mu75psc5egt9ppzuycnc2mc3'
>> > client = Client ( host_identifier , api_key )
>> > engine_name = 'favorite-videos'
>> > document = {
'id' : 'INscMGmhmX4' ,
'url' : 'https://www.youtube.com/watch?v=INscMGmhmX4' ,
'title' : 'The Original Grumpy Cat' ,
'body' : 'A wonderful video of a magnificent cat.'
}
>> > client . index_document ( engine_name , document )
{ 'id' : 'INscMGmhmX4' }
>> > engine_name = 'favorite-videos'
>> > documents = [
{
'id' : 'INscMGmhmX4' ,
'url' : 'https://www.youtube.com/watch?v=INscMGmhmX4' ,
'title' : 'The Original Grumpy Cat' ,
'body' : 'A wonderful video of a magnificent cat.'
},
{
'id' : 'JNDFojsd02' ,
'url' : 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' ,
'title' : 'Another Grumpy Cat' ,
'body' : 'A great video of another cool cat.'
}
]
>> > client . index_documents ( engine_name , documents )
[{ 'id' : 'INscMGmhmX4' , 'errors' : []}, { 'id' : 'JNDFojsd02' , 'errors' : []}]
>> > engine_name = 'favorite-videos'
>> > documents = [
{
'id' : 'INscMGmhmX4' ,
'title' : 'Updated title'
}
]
>> > client . update_documents ( engine_name , documents )
>> > engine_name = 'favorite-videos'
>> > client . get_documents ( engine_name , [ 'INscMGmhmX4' ])
[{ 'id' : 'INscMGmhmX4' , 'url' : 'https://www.youtube.com/watch?v=INscMGmhmX4' , 'title' : 'The Original Grumpy Cat' , 'body' : 'A wonderful video of a magnificent cat.' }]
>> > engine_name = 'favorite-videos'
>> > client . list_documents ( engine_name , current = 1 , size = 20 )
{
'meta' : {
'page' : {
'current' : 1 ,
'total_pages' : 1 ,
'total_results' : 2 ,
'size' : 20
}
},
'results' : [{ 'id' : 'INscMGmhmX4' , 'url' : 'https://www.youtube.com/watch?v=INscMGmhmX4' , 'title' : 'The Original Grumpy Cat' , 'body' : 'A wonderful video of a magnificent cat.' }]
}
>> > engine_name = 'favorite-videos'
>> > client . destroy_documents ( engine_name , [ 'INscMGmhmX4' ])
[{ 'id' : 'INscMGmhmX4' , 'result' : True }]
>> > engine_name = 'favorite-videos'
>> > client . get_schema ( engine_name )
{ 'name' : 'text' , 'square_km' : 'number' , 'square_mi' : 'text' }
>> > engine_name = 'favorite-videos'
>> > client . update_schema ( engine_name , { 'square_km' : 'text' })
{ 'square_km' : 'text' }
>> > client . update_schema ( engine_name , { 'square_mi' : 'text' })
{ 'square_km' : 'text' , 'square_mi' : 'text' }
>> > client . update_schema ( engine_name , { 'square_km' : 'number' })
{ 'square_km' : 'number' , 'square_mi' : 'text' }
>> > client . list_engines ( current = 1 , size = 20 )
{
'meta' : {
'page' : {
'current' : 1 ,
'total_pages' : 1 ,
'total_results' : 2 ,
'size' : 20
}
},
'results' : [{ 'name' : 'favorite-videos' }, { 'name' : 'another-engine' }]
}
>> > client . get_engine ( 'favorite-videos' )
{ 'name' : 'favorite-videos' }
>> > client . create_engine ( 'favorite-videos' , 'en' )
{ 'name' : 'favorite-videos' , 'type' : 'default' , 'language' : 'en' }
>> > client . destroy_engine ( 'favorite-videos' )
{ 'deleted' : True }
>> > client . list_synonym_sets ( 'us-national-parks' )
{
'meta' : {
'page' : {
'current' : 1 ,
'total_pages' : 1 ,
'total_results' : 3 ,
'size' : 20
}
},
'results' : [
{
'id' : 'syn-5b11ac66c9f9292013220ad3' ,
'synonyms' : [
'park' ,
'trail'
]
},
{
'id' : 'syn-5b11ac72c9f9296b35220ac9' ,
'synonyms' : [
'protected' ,
'heritage'
]
},
{
'id' : 'syn-5b11ac66c9f9292013220ad3' ,
'synonyms' : [
'hectares' ,
'acres'
]
}
]
}
>> > client . list_synonym_sets ( 'us-national-parks' , size = 1 , current = 1 )
{
'meta' : {
'page' : {
'current' : 1 ,
'total_pages' : 3 ,
'total_results' : 3 ,
'size' : 1
}
},
'results' : [
{
'id' : 'syn-5b11ac66c9f9292013220ad3' ,
'synonyms' : [
'park' ,
'trail'
]
}
]
}
>> > client . get_synonym_set ( 'us-national-parks' , 'syn-5b11ac66c9f9292013220ad3' )
{
'id' : 'syn-5b11ac66c9f9292013220ad3' ,
'synonyms' : [
'park' ,
'trail'
]
}
>> > client . create_synonym_set ( 'us-national-parks' , [ 'park' , 'trail' ])
{
'id' : 'syn-5b11ac72c9f9296b35220ac9' ,
'synonyms' : [
'park' ,
'trail'
]
}
>> > client . update_synonym_set ( 'us-national-parks' , 'syn-5b11ac72c9f9296b35220ac9' , [ 'park' , 'trail' , 'ground' ])
{
'id' : 'syn-5b11ac72c9f9296b35220ac9' ,
'synonyms' : [
'park' ,
'trail' ,
'ground'
]
}
>> > client . destroy_synonym_set ( 'us-national-parks' , 'syn-5b11ac66c9f9292013220ad3' )
{
'deleted' : True
}
>> > client . search ( 'favorite-videos' , 'grumpy cat' , {})
{ 'meta' : { 'page' : { 'current' : 1 , 'total_pages' : 1 , 'total_results' : 2 , 'size' : 10 }, ...}, 'results' : [...]}
>> > client . multi_search ( 'favorite-videos' , [{
'query' : 'cat' ,
'options' : { 'search_fields' : { 'title' : {} }}
},{
'query' : 'dog' ,
'options' : { 'search_fields' : { 'body' : {} }}
}])
[{ 'meta' : {...}, 'results' : [...]}, { 'meta' : {...}, 'results' : [...]}]
>> > client . query_suggestion ( 'favorite-videos' , 'cat' , {
'size' : 10 ,
'types' : {
'documents' : {
'fields' : [ 'title' ]
}
}
})
{ 'results' : { 'documents' : [{ 'suggestion' : 'cat' }]}, 'meta' : { 'request_id' : '390be384ad5888353e1b32adcfaaf1c9' }}
>> > client . click ( engine_name , { 'query' : 'cat' , 'document_id' : 'INscMGmhmX4' })
Criando uma chave de pesquisa que pesquisará apenas no campo do corpo.
>> > api_key = 'search-xxxxxxxxxxxxxxxxxxxxxxxx'
>> > api_key_name = 'search-key' # This name must match the name of the key above from your App Search dashboard
>> > signed_search_key = Client . create_signed_search_key ( api_key , api_key_name , { 'search_fields' : { 'body' : {}}})
>> > client = Client (
base_endpoint = 'localhost:3002/api/as/v1' ,
api_key = signed_search_key ,
use_https = False
)
>> > client . create_meta_engine (
engine_name = engine_name ,
source_engines = [
'source-engine-1' ,
'source-engine-2'
]
)
{ 'source_engines' : [ 'source-engine-1' , 'source-engine-2' ], 'type' : 'meta' , 'name' : 'my-meta-engine' }
>> > client . add_meta_engine_sources ( 'my-meta-engine' , [ 'source-engine-3' ])
{ 'source_engines' : [ 'source-engine-1' , 'source-engine-2' , 'source-engine-3' ], 'type' : 'meta' , 'name' : 'my-meta-engine' }
>> > client . delete_meta_engine_sources ( 'my-meta-engine' , [ 'source-engine-3' ])
{ 'source_engines' : [ 'source-engine-1' , 'source-engine-2' ], 'type' : 'meta' , 'name' : 'my-meta-engine' }
>> > client . get_api_logs ( 'my-meta-engine' , {
"filters" : {
"date" : {
"from" : "2020-03-30T00:00:00+00:00" ,
"to" : "2020-03-31T00:00:00+00:00"
},
"status" : "429"
}
})
{
'results' : [],
'meta' : {
'query' : '' ,
'filters' : {
'date' : {
'from' : '2020-03-27T00:00:00+00:00' ,
'to' : '2020-03-31T00:00:00+00:00'
},
'status' : '429'
},
'sort_direction' : 'asc' ,
'page' : {
'current' : 1 ,
'total_pages' : 0 ,
'total_results' : 0 ,
'size' : 10
}
}
}
>> > client . get_search_settings ( engine_name = 'us-national-parks' )
{
"search_fields" : {
"name" : {
"weight" : 1
},
"description" : {
"weight" : 1
}
},
"result_fields" : {
"name" : {
"raw" : {}
},
"description" : {
"raw" : {}
}
},
"boosts" : {}
}
>> > client . update_search_settings (
engine_name = 'us-national-parks' ,
search_settings = {
"search_fields" : {
"name" : {
"weight" : 2
},
"description" : {
"weight" : 1
}
},
"result_fields" : {
"name" : {
"raw" : {}
},
"description" : {
"raw" : {}
}
},
"boosts" : {}
}
)
{
"search_fields" : {
"name" : {
"weight" : 2
},
"description" : {
"weight" : 1
}
},
"result_fields" : {
"name" : {
"raw" : {}
},
"description" : {
"raw" : {}
}
},
"boosts" : {}
}
>> > client . reset_search_settings ( engine_name = 'us-national-parks' )
{
"search_fields" : {
"name" : {
"weight" : 1
},
"description" : {
"weight" : 1
}
},
"boosts" : {}
}
python setup . py test
Se algo não estiver funcionando conforme o esperado, abra um problema.
Sua melhor aposta é ler a documentação.
Você pode conferir os fóruns de discussão da comunidade do Elastic App Search.
Congratulamo-nos com colaboradores do projeto. Antes de começar, algumas observações:
Apache 2.0 © Elástico
Obrigado a todos os colaboradores!