️ Этот клиент устарел️ Начиная с версии Enterprise Search 7.10.0, мы направляем пользователей на новый клиент Python для корпоративного поиска и объявляем его устаревшим.
Этот клиент будет совместим со всеми выпусками Enterprise Search 7.x, но не совместим с выпусками 8.x. Наши усилия по разработке этого проекта будут ограничены исправлением ошибок. Все будущие улучшения будут сосредоточены на клиенте Python для корпоративного поиска.
Спасибо! - Эластичный
Собственный клиент Python для создания отличных и релевантных возможностей поиска с помощью Elastic App Search.
Чтобы установить клиент, используйте pip:
python - m pip install elastic - app - search
Вы также можете скачать исходный код проекта и запустить::
python setup . py install
Этот клиент разрабатывается и выпускается вместе с App Search.
Чтобы гарантировать совместимость, используйте самую последнюю версию этой библиотеки в основной версии соответствующей реализации поиска приложений.
Например, для App Search 7.3
используйте 7.3
этой библиотеки или более позднюю, но не 8.0
.
Если вы используете версию SaaS, доступную на сайте Swiftype.com для поиска приложений, вам следует использовать версию клиента 7.5.x.
Использование этого клиента предполагает, что у вас уже есть запущенный экземпляр Elastic App Search.
Экземпляр клиента можно создать с помощью параметров base_endpoint
, api_key
и use_https
:
>> > from elastic_app_search import Client
>> > client = Client (
base_endpoint = 'localhost:3002/api/as/v1' ,
api_key = 'private-mu75psc5egt9ppzuycnc2mc3' ,
use_https = False
)
Примечания:
[api_key]
аутентифицирует запросы к API. С клиентом можно использовать любой тип ключа, однако каждый из них имеет разную область действия. Для получения дополнительной информации о ключах ознакомьтесь с документацией.
base_endpoint
должен исключить протокол и включить префикс api/as/v1
. Обычно его можно найти на вкладке «Учетные данные» на панели поиска приложений.
Установите для use_https
значение True
или False
в зависимости от конфигурации вашего сервера. Часто это будет False
при разработке на localhost
и True
для производственных сред.
Ниже приведен пример конфигурации для 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
)
При использовании версии SaaS, доступной на Swiftype.com для поиска приложений, вы можете настроить клиент, используя свой host_identifier
вместо параметра base_endpoint
. host_identifier
можно найти в меню «Учетные данные».
>> > 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' })
Создание ключа поиска, который будет выполнять поиск только по полю тела.
>> > 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
Если что-то не работает должным образом, пожалуйста, откройте проблему.
Лучше всего прочитать документацию.
Вы можете посетить форумы обсуждения сообщества Elastic App Search.
Мы приветствуем участников проекта. Прежде чем начать, пара замечаний:
Апач 2.0 © Elastic
Спасибо всем участникам!