@elastic/search-ui-elasticsearch-connector
v1.22.0
Published
A Search UI connector for Elasticsearch
Downloads
32,943
Maintainers
Keywords
Readme
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)
| Param | Type | | ------- | -------------------------------- | | options | Options |
Options
Kind: global typedef
| Param | Type | Default | Description | | ------ | ------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | cloud | Object | { id: string } | Elastic cloud configuration. Can be found in your cloud deployment dashboard. | | host | string | | Elasticsearch host. | | index | string | | Index name for where the search documents are contained in | | apiKey | string | | Optional. 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