@elastic/workplace-search-node

Elastic Workplace Search client for Node.js

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@elastic/workplace-search-node
800.4.03 years ago3 years agoMinified + gzip package size for @elastic/workplace-search-node in KB

Readme

CircleCI build


A first-party Node.js client for Elastic Workplace Search.

Contents


Getting started 🐣

With npm:
npm install @elastic/workplace-search-node

or clone locally:
git clone git@github.com:elastic/workplace-search-node.git
cd workplace-search-node
npm install

Usage

Create a new instance of the Elastic Workplace Search Client with your access token:
const WorkplaceSearchClient = require('@elastic/workplace-search-node')
const accessToken = '' // your access token
const client = new WorkplaceSearchClient(accessToken)

Change API endpoint

const client = new WorkplaceSearchClient(
  accessToken,
  'https://your-server.example.com/api/ws/v1'
)

Indexing Documents

This example shows how to use the indexDocuments method:
const contentSourceKey = '' // your content source key
const documents = [
  {
    id: 1234,
    title: '5 Tips On Finding A Mentor',
    body:
      'The difference between a budding entrepreneur who merely shows promise and one who is already enjoying some success often comes down to mentoring.',
    url: 'https://www.shopify.com/content/5-tips-on-finding-a-mentor'
  },
  {
    id: 1235,
    title: 'How to Profit from Your Passions',
    body:
      'Want to know the secret to starting a successful business? Find a void and fill it.',
    url: 'https://www.shopify.com/content/how-to-profit-from-your-passions'
  }
]

client
  .indexDocuments(contentSourceKey, documents)
  .then(results => {
    // handle results
  })
  .catch(error => {
    // handle error
  })

Destroying Documents

const contentSourceKey = '' // your content source key
const documentIds = [1234, 1235]

client
  .destroyDocuments(contentSourceKey, documentIds)
  .then(destroyDocumentsResults => {
    // handle destroy documents results
  })
  .catch(error => {
    // handle error
  })

Listing all permissions

const contentSourceKey = '' // your content source key
const pageParams = { currentPage: 2, pageSize: 20 } // optional argument

client
  .listAllPermissions(contentSourceKey, pageParams)
  .then(response => {
    // handle response
  })
  .catch(error => {
    // handle error
  })

Getting user permissions

const contentSourceKey = '' // your content source key
const user = 'enterprise_search' // username

client
  .getUserPermissions(contentSourceKey, user)
  .then(response => {
    // handle response
  })
  .catch(error => {
    // handle error
  })

Updating user permissions

const contentSourceKey = '' // your content source key
const user = 'enterprise_search' // username
const permissions = { permissions: ['permission1', 'permission2'] } // permissions to assign to the user

client
  .updateUserPermissions(contentSourceKey, user, permissions)
  .then(response => {
    // handle response
  })
  .catch(error => {
    // handle error
  })

Adding user permissions

const contentSourceKey = '' // your content source key
const user = 'enterprise_search' // username
const permissions = { permissions: ['permission2'] } // permissions to add to the user

client
  .addUserPermissions(contentSourceKey, user, permissions)
  .then(response => {
    // handle response
  })
  .catch(error => {
    // handle error
  })

Remove user permissions

const contentSourceKey = '' // your content source key
const user = 'enterprise_search' // username
const permissions = { permissions: ['permission2'] } //permissions to remove from the user

client
  .removeUserPermissions(contentSourceKey, user, permissions)
  .then(response => {
    // handle response
  })
  .catch(error => {
    // handle error
  })

Running tests

Run tests via npm:
$ npm test

FAQ 🔮

Where do I report issues with the client?

If something is not working as expected, please open an issue.

Contribute 🚀

We welcome contributors to the project. Before you begin, a couple notes...

License 📗

Apache 2.0 © Elastic
Thank you to all the contributors!