summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-06-20 07:27:57 +0000
committerCoprDistGit <infra@openeuler.org>2023-06-20 07:27:57 +0000
commit257c272f0d7fe95591369856d60b8f9eb85bbf98 (patch)
tree1b3322dd99d63161ed80e1ab813af7977bc7dc09
parent57c14355321ac52704e267f17572464f8cde1223 (diff)
automatic import of python-swiftype-app-searchopeneuler20.03
-rw-r--r--.gitignore1
-rw-r--r--python-swiftype-app-search.spec948
-rw-r--r--sources1
3 files changed, 950 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..a06de01 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/swiftype_app_search-0.6.2.tar.gz
diff --git a/python-swiftype-app-search.spec b/python-swiftype-app-search.spec
new file mode 100644
index 0000000..0df0007
--- /dev/null
+++ b/python-swiftype-app-search.spec
@@ -0,0 +1,948 @@
+%global _empty_manifest_terminate_build 0
+Name: python-swiftype-app-search
+Version: 0.6.2
+Release: 1
+Summary: A Deprecated API client for Swiftype App Search - Use new elastic-app-search package instead.
+License: MIT
+URL: https://github.com/swiftype/swiftype-app-search-python
+Source0: https://mirrors.aliyun.com/pypi/web/packages/68/b4/595939b06f0f5cee6d3fdbdda3f2cf3c46d23c9ce2246a6972e3a4e98f02/swiftype_app_search-0.6.2.tar.gz
+BuildArch: noarch
+
+
+%description
+<p align="center"><img src="https://github.com/swiftype/swiftype-app-search-python/blob/master/logo-app-search.png?raw=true" alt="Elastic App Search Logo"></p>
+
+> **⚠️ This repository is deprecated ⚠️**
+>
+> **Please visit [https://github.com/elastic/app-search-python](https://github.com/elastic/app-search-python) for the up to date version. Thank you! - Elastic**
+
+<p align="center">
+<a href="https://github.com/swiftype/swiftype-app-search-python/releases"><img src="https://img.shields.io/github/release/swiftype/swiftype-app-search-python/all.svg?style=flat-square" alt="GitHub release" /></a></p>
+
+> A first-party Python client for building excellent, relevant search experiences with [Elastic App Search](https://www.elastic.co/cloud/app-search-service).
+
+## Contents
+
++ [Getting started](#getting-started-)
++ [Dependencies](#dependencies)
++ [Usage](#usage)
++ [Running tests](#running-tests)
++ [FAQ](#faq-)
++ [Contribute](#contribute-)
++ [License](#license-)
+
+***
+
+## Getting started 🐣
+
+To install the client, use pip:
+
+```python
+python -m pip install swiftype_app_search
+```
+
+You can also download the project source and run::
+
+```python
+python setup.py install
+```
+
+## Dependencies
+
++ Python 2.7 / Python 3.3
++ [Requests](https://github.com/requests/requests)
++ [PyJWT](https://github.com/jpadilla/pyjwt)
+
+## Usage
+
+### Instantiating a client
+
+```python
+>>> from swiftype_app_search import Client
+>>> host_identifier = 'host-c5s2mj'
+>>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3'
+>>> client = Client(host_identifier, api_key)
+```
+
+### Using with App Search Managed Deploys
+
+The client can be configured to use a managed deploy by adjusting the `base_endpoint` and `use_https` parameters. Since managed deploys do not rely on a `host_identifier`, it can be omitted.
+
+```python
+>>> from swiftype_app_search import Client
+>>> client = Client(
+ api_key='private-mu75psc5egt9ppzuycnc2mc3',
+ base_endpoint='localhost:3002/api/as/v1',
+ use_https=False
+)
+```
+
+### Indexing: Creating or Updating a Single Document
+
+```python
+>>> 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'}
+```
+
+### Indexing: Creating or Updating Multiple Documents
+
+```python
+>>> 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': []}]
+```
+
+### Indexing: Updating documents (Partial Updates)
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> documents = [
+ {
+ 'id': 'INscMGmhmX4',
+ 'title': 'Updated title'
+ }
+]
+
+>>> client.update_documents(engine_name, documents)
+```
+
+### Get Documents
+
+```python
+>>> 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.'}]
+```
+
+### List Documents
+```python
+>>> 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.'}]
+}
+```
+
+### Destroy Documents
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> client.destroy_documents(engine_name, ['INscMGmhmX4'])
+[{'id': 'INscMGmhmX4','result': True}]
+```
+
+### Get Schema
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> client.get_schema(engine_name)
+{'name':'text', 'square_km': 'number', 'square_mi': 'text'}
+```
+
+### Create/Update Schema
+
+```python
+>>> 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'}
+```
+
+### List Engines
+
+```python
+>>> 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'}]
+}
+```
+
+### Get an Engine
+
+```python
+>>> client.get_engine('favorite-videos')
+{'name': 'favorite-videos'}
+```
+
+### Create an Engine
+
+```python
+>>> client.create_engine('favorite-videos', 'en')
+{'name': 'favorite-videos', 'type': 'default', 'language': 'en'}
+```
+
+### Destroy an Engine
+
+```python
+>>> client.destroy_engine('favorite-videos')
+{'deleted': True}
+```
+
+### Searching
+
+```python
+>>> client.search('favorite-videos', 'grumpy cat', {})
+{'meta': {'page': {'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 10}, ...}, 'results': [...]}
+```
+
+### Multi-Search
+
+```python
+>>> client.multi_search('favorite-videos', [{
+ 'query': 'cat',
+ 'options': { 'search_fields': { 'title': {} }}
+},{
+ 'query': 'dog',
+ 'options': { 'search_fields': { 'body': {} }}
+}])
+[{'meta': {...}, 'results': [...]}, {'meta': {...}, 'results': [...]}]
+```
+
+### Query Suggestion
+
+```python
+>>> client.query_suggestion('favorite-videos', 'cat', {
+ 'size': 10,
+ 'types': {
+ 'documents': {
+ 'fields': ['title']
+ }
+ }
+})
+{'results': {'documents': [{'suggestion': 'cat'}]}, 'meta': {'request_id': '390be384ad5888353e1b32adcfaaf1c9'}}
+```
+
+### Clickthrough Tracking
+
+```python
+>>> client.click(engine_name, {'query': 'cat', 'document_id': 'INscMGmhmX4'})
+```
+
+
+### Create a Signed Search Key
+
+Creating a search key that will only search over the body field.
+
+```python
+>>> 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)
+```
+
+## Running tests
+
+```python
+python setup.py test
+```
+
+## FAQ 🔮
+
+### Where do I report issues with the client?
+
+If something is not working as expected, please open an [issue](https://github.com/swiftype/swiftype-app-search-python/issues/new).
+
+### Where can I learn more about App Search?
+
+Your best bet is to read the [documentation](https://swiftype.com/documentation/app-search).
+
+### Where else can I go to get help?
+
+You can checkout the [Elastic App Search community discuss forums](https://discuss.elastic.co/c/app-search).
+
+## Contribute 🚀
+
+We welcome contributors to the project. Before you begin, a couple notes:
+
++ Prior to opening a pull request, please create an issue to [discuss the scope of your proposal](https://github.com/swiftype/swiftype-app-search-python/issues).
++ Please write simple code and concise documentation, when appropriate.
+
+## License 📗
+
+[MIT](https://github.com/swiftype/swiftype-app-search-python/blob/master/LICENSE.txt) © [Elastic](https://github.com/elastic)
+
+Thank you to all the [contributors](https://github.com/swiftype/swiftype-app-search-python/graphs/contributors)!
+
+%package -n python3-swiftype-app-search
+Summary: A Deprecated API client for Swiftype App Search - Use new elastic-app-search package instead.
+Provides: python-swiftype-app-search
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-swiftype-app-search
+<p align="center"><img src="https://github.com/swiftype/swiftype-app-search-python/blob/master/logo-app-search.png?raw=true" alt="Elastic App Search Logo"></p>
+
+> **⚠️ This repository is deprecated ⚠️**
+>
+> **Please visit [https://github.com/elastic/app-search-python](https://github.com/elastic/app-search-python) for the up to date version. Thank you! - Elastic**
+
+<p align="center">
+<a href="https://github.com/swiftype/swiftype-app-search-python/releases"><img src="https://img.shields.io/github/release/swiftype/swiftype-app-search-python/all.svg?style=flat-square" alt="GitHub release" /></a></p>
+
+> A first-party Python client for building excellent, relevant search experiences with [Elastic App Search](https://www.elastic.co/cloud/app-search-service).
+
+## Contents
+
++ [Getting started](#getting-started-)
++ [Dependencies](#dependencies)
++ [Usage](#usage)
++ [Running tests](#running-tests)
++ [FAQ](#faq-)
++ [Contribute](#contribute-)
++ [License](#license-)
+
+***
+
+## Getting started 🐣
+
+To install the client, use pip:
+
+```python
+python -m pip install swiftype_app_search
+```
+
+You can also download the project source and run::
+
+```python
+python setup.py install
+```
+
+## Dependencies
+
++ Python 2.7 / Python 3.3
++ [Requests](https://github.com/requests/requests)
++ [PyJWT](https://github.com/jpadilla/pyjwt)
+
+## Usage
+
+### Instantiating a client
+
+```python
+>>> from swiftype_app_search import Client
+>>> host_identifier = 'host-c5s2mj'
+>>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3'
+>>> client = Client(host_identifier, api_key)
+```
+
+### Using with App Search Managed Deploys
+
+The client can be configured to use a managed deploy by adjusting the `base_endpoint` and `use_https` parameters. Since managed deploys do not rely on a `host_identifier`, it can be omitted.
+
+```python
+>>> from swiftype_app_search import Client
+>>> client = Client(
+ api_key='private-mu75psc5egt9ppzuycnc2mc3',
+ base_endpoint='localhost:3002/api/as/v1',
+ use_https=False
+)
+```
+
+### Indexing: Creating or Updating a Single Document
+
+```python
+>>> 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'}
+```
+
+### Indexing: Creating or Updating Multiple Documents
+
+```python
+>>> 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': []}]
+```
+
+### Indexing: Updating documents (Partial Updates)
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> documents = [
+ {
+ 'id': 'INscMGmhmX4',
+ 'title': 'Updated title'
+ }
+]
+
+>>> client.update_documents(engine_name, documents)
+```
+
+### Get Documents
+
+```python
+>>> 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.'}]
+```
+
+### List Documents
+```python
+>>> 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.'}]
+}
+```
+
+### Destroy Documents
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> client.destroy_documents(engine_name, ['INscMGmhmX4'])
+[{'id': 'INscMGmhmX4','result': True}]
+```
+
+### Get Schema
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> client.get_schema(engine_name)
+{'name':'text', 'square_km': 'number', 'square_mi': 'text'}
+```
+
+### Create/Update Schema
+
+```python
+>>> 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'}
+```
+
+### List Engines
+
+```python
+>>> 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'}]
+}
+```
+
+### Get an Engine
+
+```python
+>>> client.get_engine('favorite-videos')
+{'name': 'favorite-videos'}
+```
+
+### Create an Engine
+
+```python
+>>> client.create_engine('favorite-videos', 'en')
+{'name': 'favorite-videos', 'type': 'default', 'language': 'en'}
+```
+
+### Destroy an Engine
+
+```python
+>>> client.destroy_engine('favorite-videos')
+{'deleted': True}
+```
+
+### Searching
+
+```python
+>>> client.search('favorite-videos', 'grumpy cat', {})
+{'meta': {'page': {'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 10}, ...}, 'results': [...]}
+```
+
+### Multi-Search
+
+```python
+>>> client.multi_search('favorite-videos', [{
+ 'query': 'cat',
+ 'options': { 'search_fields': { 'title': {} }}
+},{
+ 'query': 'dog',
+ 'options': { 'search_fields': { 'body': {} }}
+}])
+[{'meta': {...}, 'results': [...]}, {'meta': {...}, 'results': [...]}]
+```
+
+### Query Suggestion
+
+```python
+>>> client.query_suggestion('favorite-videos', 'cat', {
+ 'size': 10,
+ 'types': {
+ 'documents': {
+ 'fields': ['title']
+ }
+ }
+})
+{'results': {'documents': [{'suggestion': 'cat'}]}, 'meta': {'request_id': '390be384ad5888353e1b32adcfaaf1c9'}}
+```
+
+### Clickthrough Tracking
+
+```python
+>>> client.click(engine_name, {'query': 'cat', 'document_id': 'INscMGmhmX4'})
+```
+
+
+### Create a Signed Search Key
+
+Creating a search key that will only search over the body field.
+
+```python
+>>> 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)
+```
+
+## Running tests
+
+```python
+python setup.py test
+```
+
+## FAQ 🔮
+
+### Where do I report issues with the client?
+
+If something is not working as expected, please open an [issue](https://github.com/swiftype/swiftype-app-search-python/issues/new).
+
+### Where can I learn more about App Search?
+
+Your best bet is to read the [documentation](https://swiftype.com/documentation/app-search).
+
+### Where else can I go to get help?
+
+You can checkout the [Elastic App Search community discuss forums](https://discuss.elastic.co/c/app-search).
+
+## Contribute 🚀
+
+We welcome contributors to the project. Before you begin, a couple notes:
+
++ Prior to opening a pull request, please create an issue to [discuss the scope of your proposal](https://github.com/swiftype/swiftype-app-search-python/issues).
++ Please write simple code and concise documentation, when appropriate.
+
+## License 📗
+
+[MIT](https://github.com/swiftype/swiftype-app-search-python/blob/master/LICENSE.txt) © [Elastic](https://github.com/elastic)
+
+Thank you to all the [contributors](https://github.com/swiftype/swiftype-app-search-python/graphs/contributors)!
+
+%package help
+Summary: Development documents and examples for swiftype-app-search
+Provides: python3-swiftype-app-search-doc
+%description help
+<p align="center"><img src="https://github.com/swiftype/swiftype-app-search-python/blob/master/logo-app-search.png?raw=true" alt="Elastic App Search Logo"></p>
+
+> **⚠️ This repository is deprecated ⚠️**
+>
+> **Please visit [https://github.com/elastic/app-search-python](https://github.com/elastic/app-search-python) for the up to date version. Thank you! - Elastic**
+
+<p align="center">
+<a href="https://github.com/swiftype/swiftype-app-search-python/releases"><img src="https://img.shields.io/github/release/swiftype/swiftype-app-search-python/all.svg?style=flat-square" alt="GitHub release" /></a></p>
+
+> A first-party Python client for building excellent, relevant search experiences with [Elastic App Search](https://www.elastic.co/cloud/app-search-service).
+
+## Contents
+
++ [Getting started](#getting-started-)
++ [Dependencies](#dependencies)
++ [Usage](#usage)
++ [Running tests](#running-tests)
++ [FAQ](#faq-)
++ [Contribute](#contribute-)
++ [License](#license-)
+
+***
+
+## Getting started 🐣
+
+To install the client, use pip:
+
+```python
+python -m pip install swiftype_app_search
+```
+
+You can also download the project source and run::
+
+```python
+python setup.py install
+```
+
+## Dependencies
+
++ Python 2.7 / Python 3.3
++ [Requests](https://github.com/requests/requests)
++ [PyJWT](https://github.com/jpadilla/pyjwt)
+
+## Usage
+
+### Instantiating a client
+
+```python
+>>> from swiftype_app_search import Client
+>>> host_identifier = 'host-c5s2mj'
+>>> api_key = 'private-mu75psc5egt9ppzuycnc2mc3'
+>>> client = Client(host_identifier, api_key)
+```
+
+### Using with App Search Managed Deploys
+
+The client can be configured to use a managed deploy by adjusting the `base_endpoint` and `use_https` parameters. Since managed deploys do not rely on a `host_identifier`, it can be omitted.
+
+```python
+>>> from swiftype_app_search import Client
+>>> client = Client(
+ api_key='private-mu75psc5egt9ppzuycnc2mc3',
+ base_endpoint='localhost:3002/api/as/v1',
+ use_https=False
+)
+```
+
+### Indexing: Creating or Updating a Single Document
+
+```python
+>>> 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'}
+```
+
+### Indexing: Creating or Updating Multiple Documents
+
+```python
+>>> 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': []}]
+```
+
+### Indexing: Updating documents (Partial Updates)
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> documents = [
+ {
+ 'id': 'INscMGmhmX4',
+ 'title': 'Updated title'
+ }
+]
+
+>>> client.update_documents(engine_name, documents)
+```
+
+### Get Documents
+
+```python
+>>> 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.'}]
+```
+
+### List Documents
+```python
+>>> 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.'}]
+}
+```
+
+### Destroy Documents
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> client.destroy_documents(engine_name, ['INscMGmhmX4'])
+[{'id': 'INscMGmhmX4','result': True}]
+```
+
+### Get Schema
+
+```python
+>>> engine_name = 'favorite-videos'
+>>> client.get_schema(engine_name)
+{'name':'text', 'square_km': 'number', 'square_mi': 'text'}
+```
+
+### Create/Update Schema
+
+```python
+>>> 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'}
+```
+
+### List Engines
+
+```python
+>>> 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'}]
+}
+```
+
+### Get an Engine
+
+```python
+>>> client.get_engine('favorite-videos')
+{'name': 'favorite-videos'}
+```
+
+### Create an Engine
+
+```python
+>>> client.create_engine('favorite-videos', 'en')
+{'name': 'favorite-videos', 'type': 'default', 'language': 'en'}
+```
+
+### Destroy an Engine
+
+```python
+>>> client.destroy_engine('favorite-videos')
+{'deleted': True}
+```
+
+### Searching
+
+```python
+>>> client.search('favorite-videos', 'grumpy cat', {})
+{'meta': {'page': {'current': 1, 'total_pages': 1, 'total_results': 2, 'size': 10}, ...}, 'results': [...]}
+```
+
+### Multi-Search
+
+```python
+>>> client.multi_search('favorite-videos', [{
+ 'query': 'cat',
+ 'options': { 'search_fields': { 'title': {} }}
+},{
+ 'query': 'dog',
+ 'options': { 'search_fields': { 'body': {} }}
+}])
+[{'meta': {...}, 'results': [...]}, {'meta': {...}, 'results': [...]}]
+```
+
+### Query Suggestion
+
+```python
+>>> client.query_suggestion('favorite-videos', 'cat', {
+ 'size': 10,
+ 'types': {
+ 'documents': {
+ 'fields': ['title']
+ }
+ }
+})
+{'results': {'documents': [{'suggestion': 'cat'}]}, 'meta': {'request_id': '390be384ad5888353e1b32adcfaaf1c9'}}
+```
+
+### Clickthrough Tracking
+
+```python
+>>> client.click(engine_name, {'query': 'cat', 'document_id': 'INscMGmhmX4'})
+```
+
+
+### Create a Signed Search Key
+
+Creating a search key that will only search over the body field.
+
+```python
+>>> 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)
+```
+
+## Running tests
+
+```python
+python setup.py test
+```
+
+## FAQ 🔮
+
+### Where do I report issues with the client?
+
+If something is not working as expected, please open an [issue](https://github.com/swiftype/swiftype-app-search-python/issues/new).
+
+### Where can I learn more about App Search?
+
+Your best bet is to read the [documentation](https://swiftype.com/documentation/app-search).
+
+### Where else can I go to get help?
+
+You can checkout the [Elastic App Search community discuss forums](https://discuss.elastic.co/c/app-search).
+
+## Contribute 🚀
+
+We welcome contributors to the project. Before you begin, a couple notes:
+
++ Prior to opening a pull request, please create an issue to [discuss the scope of your proposal](https://github.com/swiftype/swiftype-app-search-python/issues).
++ Please write simple code and concise documentation, when appropriate.
+
+## License 📗
+
+[MIT](https://github.com/swiftype/swiftype-app-search-python/blob/master/LICENSE.txt) © [Elastic](https://github.com/elastic)
+
+Thank you to all the [contributors](https://github.com/swiftype/swiftype-app-search-python/graphs/contributors)!
+
+%prep
+%autosetup -n swiftype_app_search-0.6.2
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-swiftype-app-search -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.2-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..b86856f
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+a1990c34e73f557c08a19dd44ff15095 swiftype_app_search-0.6.2.tar.gz