1.20.2-segmed-1 • Published 9 months ago

@segmed/search-ui-elasticsearch-connector v1.20.2-segmed-1

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
9 months ago

search-ui-elasticsearch-connector

Part of the Search UI project.

This Connector is used to connect Search UI directly to Elasticsearch.

⚠️ Elasticsearch connector for Search UI is currently in technical preview status. It is not ready for production use. ⚠️

Usage

npm install --save @elastic/search-ui-elasticsearch-connector
import ElasticsearchAPIConnector from "@elastic/search-ui-elasticsearch-connector";

const connector = new ElasticsearchAPIConnector({
  cloud: {
    id: "<elastic-cloud-id>"
  },
  index: "search-ui-examples", // index name where the search documents are contained
  apiKey: "apiKeyExample" // Optional. apiKey used to authorize a connection to Elasticsearch instance.
  // This key will be visible to everyone so ensure its setup with restricted privileges.
  // See Authentication section for more details.
});

ElasticsearchAPIConnector

Kind: global class

new ElasticsearchAPIConnector(options)

ParamType
optionsOptions

Options

Kind: global typedef

ParamTypeDefaultDescription
cloudObject{ id: string }Elastic cloud configuration. Can be found in your cloud deployment dashboard.
hoststringElasticsearch host.
indexstringIndex name for where the search documents are contained in
apiKeystringOptional. Credential thats setup within Kibana's UI. see kibana API keys guide.

Query Configuration Requirements

  • search_fields object is required with all fields you want to search by.

Connection & Authentication

This connector will talk to the elasticsearch instance directly from the browser. This requires further additional steps to keep your Elasticsearch instance secure as possible. You have the following options available to you to keep any sensitive data protected

Proxy the _search API call through your API

This envolves building an API route that will proxy the elasticsearch call through your API. During the proxy, you are able to:

  • Ability to add any additional authentication headers / keys as you proxy the request through the API and to Elasticsearch.
  • Update the elasticsearch query request to add any filters to filter restricted documents
  • Application performance monitoring of functionality
  • Your own user based authentication for your API
  • Add a caching layer between the API and Elasticsearch

To do this, provide the host to be the location of the API. Example host: "https://search.acme.co/search", index: "movies". In this example, you would need to implement a POST endpoint for https://search.acme.co/search/movies/_search . When the connector performs a network request, the Elasticsearch Query DSL will be contained within the body.

Use an Elasticsearch api-key

You can restrict access to indices via an api-key. See kibana API keys guide