用于弹性应用搜索的api客户端

elastic-app-search的Python项目详细描述


Elastic App Search Logo

CircleCI build

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_endpointuse_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

贡献

我们欢迎项目的贡献者。在开始之前,请注意:

许可证

Apache 2.0Elastic

感谢所有的contributors

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Hibernate、Spring和SLF4J绑定   java如何准确地导航导航地图。天花板入口()工作?   从excel文件导入数据时发生java异常   java如何将地图转换为url查询字符串?   java HSQLDB在数据库中插入值   java将元素从JTextField添加到ArrayList   java如何使用SetDataSource从名称中有空格的MP3文件中获取唱片集艺术   java排序ArrayList<ArrayList<String>>作为行字段   java在拼写检查器中更新正确的拼写   哪里可以找到JavaAPI类图?   spring boot如何在自动生成的swagger java类中屏蔽任何参数   java使用哪种设计模式(我需要类似中介模式的东西)?   java为什么JTextfield没有出现在这个实例中?   如何在Java中向当前日期添加一个月?   安卓如何使java类可序列化,从而扩展不可序列化的