️ Ce client est obsolète️ À partir de la version 7.10.0 d'Enterprise Search, nous dirigeons les utilisateurs vers le nouveau client Python d'Enterprise Search et déprécions ce client.
Ce client sera compatible avec toutes les versions d'Enterprise Search 7.x, mais ne sera pas compatible avec les versions 8.x. Notre effort de développement sur ce projet se limitera à la correction de bugs. Toutes les améliorations futures seront concentrées sur le client Enterprise Search Python.
Merci! - Élastique
Un client Python propriétaire permettant de créer d'excellentes expériences de recherche pertinentes avec Elastic App Search.
Pour installer le client, utilisez pip :
python - m pip install elastic - app - search
Vous pouvez également télécharger la source du projet et exécuter : :
python setup . py install
Ce client est versionné et publié avec App Search.
Pour garantir la compatibilité, utilisez la version la plus récente de cette bibliothèque dans la version majeure de l'implémentation App Search correspondante.
Par exemple, pour App Search 7.3
, utilisez 7.3
de cette bibliothèque ou une version ultérieure, mais pas 8.0
.
Si vous utilisez la version SaaS disponible sur swiftype.com d'App Search, vous devez utiliser la version 7.5.x du client.
L'utilisation de ce client suppose que vous disposez déjà d'une instance d'Elastic App Search opérationnelle.
Le client peut être instancié à l'aide des paramètres base_endpoint
, api_key
et use_https
:
>> > from elastic_app_search import Client
>> > client = Client (
base_endpoint = 'localhost:3002/api/as/v1' ,
api_key = 'private-mu75psc5egt9ppzuycnc2mc3' ,
use_https = False
)
Remarques :
La [api_key]
authentifie les requêtes adressées à l'API. Vous pouvez utiliser n'importe quel type de clé avec le client, mais chacun a une portée différente. Pour plus d’informations sur les clés, consultez la documentation.
Le base_endpoint
doit exclure le protocole et inclure le préfixe api/as/v1
. Cela se trouve généralement dans l’onglet Informations d’identification du tableau de bord de recherche d’applications.
Définissez use_https
sur True
ou False
selon la configuration de votre serveur. Souvent, ce sera False
lors de l'exécution en développement sur localhost
et True
pour les environnements de production.
Voici un exemple de configuration pour 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
)
Lorsque vous utilisez la version SaaS disponible sur Swiftype.com d'App Search, vous pouvez configurer le client à l'aide de votre host_identifier
au lieu du paramètre base_endpoint
. L' host_identifier
se trouve dans le menu Informations d'identification.
>> > 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' })
Création d'une clé de recherche qui recherchera uniquement dans le champ du corps.
>> > 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
Si quelque chose ne fonctionne pas comme prévu, veuillez ouvrir un problème.
Le mieux est de lire la documentation.
Vous pouvez consulter les forums de discussion de la communauté Elastic App Search.
Nous accueillons les contributeurs au projet. Avant de commencer, quelques remarques :
Apache 2.0 © Élastique
Merci à tous les contributeurs !