Implement ElasticSearch search engine

* Adding indexing, searching and default translator for ElasticSearch engine
* Modifying default backend to use ES if it is enabled
* Adding configuration schema to configure ElasticSearch 3 different ways
   * Elastic.co hosted solution
   * AWS hosted ElasticSearch Service
   * Custom, using standard ElasticSearch URL and auth info
* Add and modify some of the documentation regarding search

Signed-off-by: Jussi Hallila <jussi@hallila.com>
This commit is contained in:
Jussi Hallila
2021-07-21 16:45:16 +02:00
parent 2ce0b4ca0d
commit d9c13d535b
24 changed files with 1385 additions and 58 deletions
+1
View File
@@ -47,6 +47,7 @@
"@backstage/plugin-scaffolder-backend-module-rails": "^0.1.3",
"@backstage/plugin-search-backend": "^0.2.3",
"@backstage/plugin-search-backend-node": "^0.4.0",
"@backstage/plugin-search-backend-module-elasticsearch": "^0.0.1",
"@backstage/plugin-techdocs-backend": "^0.9.0",
"@backstage/plugin-todo-backend": "^0.1.8",
"@gitbeaker/node": "^30.2.0",
+8 -1
View File
@@ -22,13 +22,20 @@ import {
import { PluginEnvironment } from '../types';
import { DefaultCatalogCollator } from '@backstage/plugin-catalog-backend';
import { DefaultTechDocsCollator } from '@backstage/plugin-techdocs-backend';
import { ElasticSearchSearchEngine } from '@backstage/plugin-search-backend-module-elasticsearch';
export default async function createPlugin({
logger,
discovery,
config,
}: PluginEnvironment) {
// Initialize a connection to a search engine.
const searchEngine = new LunrSearchEngine({ logger });
const searchEngine = config.has('search.elasticSearch')
? await ElasticSearchSearchEngine.fromConfig({
logger,
config,
})
: new LunrSearchEngine({ logger });
const indexBuilder = new IndexBuilder({ logger, searchEngine });
// Collators are responsible for gathering documents known to plugins. This