Workplace Search APIs
editWorkplace Search APIs
editOn this page
Initializing the Client
editThe WorkplaceSearch client can either be configured directly:
# Use the Workplace client directly:
from elastic_enterprise_search import WorkplaceSearch
workplace_search = WorkplaceSearch(
"http://localhost:3002"
)
# Now call API methods
workplace_search.search(..., http_auth="<oauth-access-token>")
…or can be used via a configured EnterpriseSearch.workplace_search instance:
from elastic_enterprise_search import EnterpriseSearch
ent_search = EnterpriseSearch("http://localhost:3002")
# Now call API methods
ent_search.workplace_search.search(..., http_auth="<oauth-access-token>")
Document APIs
editTo ingest documents into Workplace Search with the API you must first create a Custom Content Source and get the Content Source ID and Content Source Access Token.
In the examples below assume that CONTENT_SOURCE_ID is the Content Source ID
and CONTENT_SOURCE_ACCESS_TOKEN is the Content Source Access Token from above.
Create or update Documents
editTo create new documents or update existing documents use the index_documents() method.
The _allow_permissions and _deny_permissions properties can be used to
control visibility of the documents for users. See the Permissions section below
for more information on Permissions.
# Request:
workplace_search.index_documents(
http_auth="<CONTENT_SOURCE_ACCESS_TOKEN>",
content_source_id="<CONTENT_SOURCE_ID>",
documents=[
{
"_allow_permissions": ["permission1"],
"_deny_permissions": [],
"id" : 1234,
"title" : "The Meaning of Time",
"body" : "Not much. It is a made up thing.",
"url" : "https://example.com/meaning/of/time",
"created_at": "2019-06-01T12:00:00+00:00",
"type": "list"
},
{
"_allow_permissions": [],
"_deny_permissions": ["permission2"],
"id" : 1235,
"title" : "The Meaning of Sleep",
"body" : "Rest, recharge, and connect to the Ether.",
"url" : "https://example.com/meaning/of/sleep",
"created_at": "2019-06-01T12:00:00+00:00",
"type": "list"
}
]
)
# Response:
{
"results": [
{
"id":"1234",
"errors":[]
},
{
"id":"1235",
"errors":[]
}
]
}
Delete Documents
editTo remove documents from a custom content source use the delete_documents() method
and supply a list of document IDs to body:
# Request:
workplace_search.delete_documents(
http_auth="<CONTENT_SOURCE_ACCESS_TOKEN>",
content_source_id="<CONTENT_SOURCE_ID>",
document_ids=[1234, 1235]
)
# Response:
{
"results": [
{
"id": 1234,
"success": True
},
{
"id": 1235,
"success": True
}
]
}
Search APIs
editSearch requires an OAuth access token
in the http_auth parameter to authenticate.
# Request:
workplace_search.search(
body={
"query": "sleep"
}
)
# Response:
{
"meta": {
...
},
"results": [
{
"title": {
"raw": "The Meaning of Sleep",
"snippet": "The Meaning of <em>Sleep</em>",
},
"_meta": {
"source": "custom-source",
"last_updated": "2020-03-27T20:10:33+00:00",
"content_source_id": "<CONTENT_SOURCE_ID>",
"id": "1235",
"score": 6.359234
},
"source": {
"raw": "custom-source"
},
"content_source_id": {
"raw": "<CONTENT_SOURCE_ID>"
},
"id": {
"raw": "park_american-samoa"
},
...
},
...
]
}
Permissions APIs
editPermissions can be set per-user and then applied to documents either
by _allow_permissions or _deny_permissions to control access to documents.
Add Permission to User
editTo add permissions to a user example.user
use the add_user_permissions() method:
# Request:
workplace_search.add_user_permissions(
content_source_id="<CONTENT_SOURCE_ID>",
http_auth="<CONTENT_SOURCE_ACCESS_TOKEN>",
user="example.user",
body={
"permissions": ["permission1", "permission2"]
}
)
# Response:
{
"user": "example.user",
"permissions": [
"permission1",
"permission2"
]
}
Get User Permissions
editTo view a users permissions use the get_permissions() method:
# Request:
workplace_search.get_user_permissions(
content_source_id="<CONTENT_SOURCE_ID>",
http_auth="<CONTENT_SOURCE_ACCESS_TOKEN>",
user="example.user"
)
# Response:
{
"user": "example.user",
"permissions": [
"permission1",
"permission2"
]
}
Listing Permissions for Content Source
editTo view all users permissions for a custom content source use the list_permissions() method:
# Request:
workplace_search.list_permissions(
content_source_id="<CONTENT_SOURCE_ID>",
http_auth="<CONTENT_SOURCE_ACCESS_TOKEN>"
)
# Response:
[
{
"user": "example.user",
"permissions": [
"permission1",
"permission2"
]
}
]
Remove Permissions from User
editTo remove one or more permissions from a user use the delete_user_permissions() method:
# Request:
workplace_search.delete_user_permissions(
content_source_id="<CONTENT_SOURCE_ID>",
http_auth="<CONTENT_SOURCE_ACCESS_TOKEN>",
user="example.user",
body={
"permissions": ["permission2"]
}
)
# Response:
{
"user": "example.user",
"permissions": [
"permission1"
]
}