用于弹性应用搜索的api客户端
elastic-app-search的Python项目详细描述
A first-party Python client for building excellent, relevant search experiences with Elastic App Search.
内容
入门
要安装客户端,请使用pip:
python-mpipinstallelastic-app-search
您还可以下载项目源代码并运行:
pythonsetup.pyinstall
依赖关系
版本控制
此客户端是版本控制的,与应用程序搜索一起发布。
要保证兼容性,请在相应应用程序搜索实现的主版本中使用此库的最新版本。
例如,对于应用程序搜索7.3
,请使用此库或更高版本的7.3
,但不要使用8.0
。
如果您是SaaS用户,只需使用此库的最新版本。
用法
实例化客户机
>>>fromelastic_app_searchimportClient>>>host_identifier='host-c5s2mj'>>>api_key='private-mu75psc5egt9ppzuycnc2mc3'>>>client=Client(host_identifier,api_key)
与app search managed deploys一起使用
通过调整base_endpoint
和use_https
参数,可以将客户端配置为使用托管部署。由于托管部署不依赖于host_identifier
,因此可以省略它。
>>>fromelastic_app_searchimportClient>>>client=Client(api_key='private-mu75psc5egt9ppzuycnc2mc3',base_endpoint='localhost:3002/api/as/v1',use_https=False)< H3>索引:创建或更新单个文档
>>>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'}< H3>索引:创建或更新多个文档
>>>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':[]}]< H3>索引:更新文档(部分更新)
>>>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}
列出引擎中的所有同义词集
具有默认分页(页面大小为20)
>>>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='private-mu75psc5egt9ppzuycnc2mc3'>>>api_key_name='my-api-token'>>>signed_search_key=Client.create_signed_search_key(api_key,api_key_name,{'search_fields':{'body':{}}})>>>client=Client(host_identifier,signed_search_key)
运行测试
pythonsetup.pytest
常见问题解答
我应该在哪里向客户报告问题?
如果某些东西没有按预期工作,请打开issue。
在哪里可以了解有关应用程序搜索的更多信息?
你最好的办法是阅读documentation。
我还能去哪里寻求帮助?
您可以签出Elastic App Search community discuss forums。
贡献
我们欢迎项目的贡献者。在开始之前,请注意:
- 在打开拉取请求之前,请创建一个到discuss the scope of your proposal的问题。
- 请在适当的时候编写简单的代码和简明的文档。
许可证
感谢所有的contributors!