From 63ef0365dcf2137a0c6294b5e0738ad670e807cf Mon Sep 17 00:00:00 2001 From: jzonthemtn Date: Thu, 8 Feb 2024 09:42:40 -0500 Subject: [PATCH] Moving things to the root directory. --- .github/workflows/test.yml | 33 +++++ .gitignore | 15 ++- .../Dockerfile => Dockerfile | 0 search-relevance-plugin/LICENSE => LICENSE | 0 .../NOTICE.txt => NOTICE.txt | 0 README.md | 32 ++++- .../build.gradle => build.gradle | 0 dashboard-plugin/Dockerfile | 7 -- dashboard-plugin/README.md | 45 ------- .../build/ublDashboard-2.11.1.zip | Bin 27902 -> 0 bytes dashboard-plugin/common/index.ts | 2 - dashboard-plugin/opensearch_dashboards.json | 9 -- dashboard-plugin/opensearch_dashboards.yml | 3 - dashboard-plugin/package.json | 10 -- dashboard-plugin/public/application.tsx | 23 ---- dashboard-plugin/public/components/app.tsx | 116 ------------------ dashboard-plugin/public/index.scss | 1 - dashboard-plugin/public/index.ts | 10 -- dashboard-plugin/public/plugin.ts | 45 ------- dashboard-plugin/public/types.ts | 11 -- dashboard-plugin/server/index.ts | 11 -- dashboard-plugin/server/plugin.ts | 36 ------ dashboard-plugin/server/routes/index.ts | 17 --- dashboard-plugin/server/types.ts | 4 - dashboard-plugin/translations/ja-JP.json | 81 ------------ dashboard-plugin/tsconfig.json | 16 --- docker-compose.yaml | 2 +- ...example-events.json => example-events.json | 0 .../gradle.properties => gradle.properties | 0 .../wrapper/gradle-wrapper.jar | Bin .../wrapper/gradle-wrapper.properties | 0 search-relevance-plugin/gradlew => gradlew | 0 .../gradlew.bat => gradlew.bat | 0 .../install-plugin.sh => install-plugin.sh | 0 ...instant-search.json => instant-search.json | 0 search-relevance-plugin/.gitignore | 13 -- search-relevance-plugin/README.md | 31 ----- .../search.sh => search.sh | 0 .../settings.gradle => settings.gradle | 0 .../relevance/SearchRelevancePlugin.java | 0 .../relevance/SettingsConstants.java | 0 .../action/SearchRelevanceRestHandler.java | 0 .../action/SearchRelevanceSearchFilter.java | 0 .../relevance/backends/Backend.java | 0 .../relevance/backends/OpenSearchBackend.java | 0 .../relevance/events/EventManager.java | 0 .../relevance/events/queues/EventQueue.java | 0 .../events/queues/InternalQueue.java | 0 .../relevance/model/QueryRequest.java | 0 .../relevance/model/QueryResponse.java | 0 .../relevance/backends/events-mapping.json | 0 .../relevance/backends/queries-mapping.json | 0 .../SearchRelevanceClientYamlTestSuiteIT.java | 0 .../api/_plugins.search_relevance.json | 0 .../_plugins.search_relevance/10_basic.yml | 0 55 files changed, 76 insertions(+), 497 deletions(-) create mode 100644 .github/workflows/test.yml rename search-relevance-plugin/Dockerfile => Dockerfile (100%) rename search-relevance-plugin/LICENSE => LICENSE (100%) rename search-relevance-plugin/NOTICE.txt => NOTICE.txt (100%) rename search-relevance-plugin/build.gradle => build.gradle (100%) delete mode 100644 dashboard-plugin/Dockerfile delete mode 100755 dashboard-plugin/README.md delete mode 100644 dashboard-plugin/build/ublDashboard-2.11.1.zip delete mode 100644 dashboard-plugin/common/index.ts delete mode 100644 dashboard-plugin/opensearch_dashboards.json delete mode 100644 dashboard-plugin/opensearch_dashboards.yml delete mode 100644 dashboard-plugin/package.json delete mode 100644 dashboard-plugin/public/application.tsx delete mode 100644 dashboard-plugin/public/components/app.tsx delete mode 100644 dashboard-plugin/public/index.scss delete mode 100644 dashboard-plugin/public/index.ts delete mode 100644 dashboard-plugin/public/plugin.ts delete mode 100644 dashboard-plugin/public/types.ts delete mode 100644 dashboard-plugin/server/index.ts delete mode 100644 dashboard-plugin/server/plugin.ts delete mode 100644 dashboard-plugin/server/routes/index.ts delete mode 100644 dashboard-plugin/server/types.ts delete mode 100644 dashboard-plugin/translations/ja-JP.json delete mode 100644 dashboard-plugin/tsconfig.json rename search-relevance-plugin/example-events.json => example-events.json (100%) rename search-relevance-plugin/gradle.properties => gradle.properties (100%) rename {search-relevance-plugin/gradle => gradle}/wrapper/gradle-wrapper.jar (100%) rename {search-relevance-plugin/gradle => gradle}/wrapper/gradle-wrapper.properties (100%) rename search-relevance-plugin/gradlew => gradlew (100%) rename search-relevance-plugin/gradlew.bat => gradlew.bat (100%) rename search-relevance-plugin/install-plugin.sh => install-plugin.sh (100%) rename search-relevance-plugin/instant-search.json => instant-search.json (100%) delete mode 100644 search-relevance-plugin/.gitignore delete mode 100644 search-relevance-plugin/README.md rename search-relevance-plugin/search.sh => search.sh (100%) rename search-relevance-plugin/settings.gradle => settings.gradle (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/SearchRelevancePlugin.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/SettingsConstants.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/action/SearchRelevanceRestHandler.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/action/SearchRelevanceSearchFilter.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/backends/Backend.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/backends/OpenSearchBackend.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/events/EventManager.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/events/queues/EventQueue.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/events/queues/InternalQueue.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/model/QueryRequest.java (100%) rename {search-relevance-plugin/src => src}/main/java/org/opensearch/relevance/model/QueryResponse.java (100%) rename {search-relevance-plugin/src => src}/main/resources/org/opensearch/relevance/backends/events-mapping.json (100%) rename {search-relevance-plugin/src => src}/main/resources/org/opensearch/relevance/backends/queries-mapping.json (100%) rename {search-relevance-plugin/src => src}/yamlRestTest/java/org/opensearch/rest/action/SearchRelevanceClientYamlTestSuiteIT.java (100%) rename {search-relevance-plugin/src => src}/yamlRestTest/resources/rest-api-spec/api/_plugins.search_relevance.json (100%) rename {search-relevance-plugin/src => src}/yamlRestTest/resources/rest-api-spec/test/_plugins.search_relevance/10_basic.yml (100%) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..91f04eb --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,33 @@ +# This workflow will build a Java project with Gradle +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Run CI tests with Gradle + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + java: + - 11 + - 17 + # We need 2.12.0 at minimum for JDK 21.0.2 + - 21.0.1 + steps: + - uses: actions/checkout@v2 + - name: Setup Java ${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + distribution: 'temurin' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + - name: Build with Gradle + run: ./gradlew -Dtests.security.manager=false clean test diff --git a/.gitignore b/.gitignore index 60ba3ea..85a4b53 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,13 @@ -build/ -target/ -*.zip +# Ignore Gradle project-specific cache directory +.gradle +# Ignore Gradle build output directory +build + +# intellij files +.idea/ +*.iml +*.ipr +*.iws +build-idea/ +out/ \ No newline at end of file diff --git a/search-relevance-plugin/Dockerfile b/Dockerfile similarity index 100% rename from search-relevance-plugin/Dockerfile rename to Dockerfile diff --git a/search-relevance-plugin/LICENSE b/LICENSE similarity index 100% rename from search-relevance-plugin/LICENSE rename to LICENSE diff --git a/search-relevance-plugin/NOTICE.txt b/NOTICE.txt similarity index 100% rename from search-relevance-plugin/NOTICE.txt rename to NOTICE.txt diff --git a/README.md b/README.md index 09e4b57..3541af6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,31 @@ -# OpenSearch Relevance +# search-relevance-plugin -Playground and sandbox for the OpenSearch relevance work. +Build the plugin. Note that you will have to match up the JDK 11 on your system to java home in the `gradle.properties` file: + +`./gradlew build` + +Build the OpenSearch docker image and add the plugin: + +`docker compose build` + +Start the containers: + +`docker compose up` + +Initialize the `awesome` search relevance index: + +``` +curl -X PUT http://localhost:9200/_plugins/search_relevance/awesome +``` + +Send an event to the `awesome` store: + +``` +curl -X POST http://localhost:9200/_plugins/search_relevance/awesome -H "Content-Type: application/json" -d @instant-search.json +``` + +Get events: + +``` +curl http://localhost:9200/.awesome_events/_search +``` diff --git a/search-relevance-plugin/build.gradle b/build.gradle similarity index 100% rename from search-relevance-plugin/build.gradle rename to build.gradle diff --git a/dashboard-plugin/Dockerfile b/dashboard-plugin/Dockerfile deleted file mode 100644 index 37de088..0000000 --- a/dashboard-plugin/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM opensearchproject/opensearch-dashboards:2.11.1 - -# Disable security. -RUN /usr/share/opensearch-dashboards/bin/opensearch-dashboards-plugin remove securityDashboards -COPY --chown=opensearch-dashboards:opensearch-dashboards opensearch_dashboards.yml /usr/share/opensearch-dashboards/config/ - -# TODO: Add the plugin. diff --git a/dashboard-plugin/README.md b/dashboard-plugin/README.md deleted file mode 100755 index 7b4573d..0000000 --- a/dashboard-plugin/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# ublDashboard - -A OpenSearch Dashboards plugin - ---- - -## Development - -See the [OpenSearch Dashboards contributing -guide](https://github.com/opensearch-project/OpenSearch-Dashboards/blob/main/CONTRIBUTING.md) for instructions -setting up your development environment. - - ## Scripts -
-
yarn osd bootstrap
-
Execute this to install node_modules and setup the dependencies in your plugin and in OpenSearch Dashboards -
- -
yarn plugin-helpers build
-
Execute this to create a distributable version of this plugin that can be installed in OpenSearch Dashboards -
-
- - - ---- - -https://opensearch.org/blog/dashboards-plugins-intro/ - -https://github.com/opensearch-project/OpenSearch-Dashboards/blob/main/CONTRIBUTING.md#development-environment-setup - -https://github.com/opensearch-project/OpenSearch-Dashboards/blob/main/DEVELOPER_GUIDE.md - -git clone https://github.com/opensearch-project/OpenSearch-Dashboards.git - -cd OpenSearch-Dashboards - -node scripts/generate_plugin.js my_plugin_name - - -``` -nvm use 18.19.0 - -yarn start -``` \ No newline at end of file diff --git a/dashboard-plugin/build/ublDashboard-2.11.1.zip b/dashboard-plugin/build/ublDashboard-2.11.1.zip deleted file mode 100644 index e45c2f21f6b45d950850d13fe6b3dcb2fde9e26b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27902 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 { - ReactDOM.render( - , - element - ); - - return () => ReactDOM.unmountComponentAtNode(element); -}; diff --git a/dashboard-plugin/public/components/app.tsx b/dashboard-plugin/public/components/app.tsx deleted file mode 100644 index e07aa77..0000000 --- a/dashboard-plugin/public/components/app.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import React, { useState } from 'react'; -import { i18n } from '@osd/i18n'; -import { FormattedMessage, I18nProvider } from '@osd/i18n/react'; -import { BrowserRouter as Router } from 'react-router-dom'; - -import { - EuiButton, - EuiHorizontalRule, - EuiPage, - EuiPageBody, - EuiPageContent, - EuiPageContentBody, - EuiPageContentHeader, - EuiPageHeader, - EuiTitle, - EuiText, -} from '@elastic/eui'; - -import { CoreStart } from '../../../../src/core/public'; -import { NavigationPublicPluginStart } from '../../../../src/plugins/navigation/public'; - -import { PLUGIN_ID, PLUGIN_NAME } from '../../common'; - -interface UblDashboardAppDeps { - basename: string; - notifications: CoreStart['notifications']; - http: CoreStart['http']; - navigation: NavigationPublicPluginStart; -} - -export const UblDashboardApp = ({ - basename, - notifications, - http, - navigation, -}: UblDashboardAppDeps) => { - // Use React hooks to manage state. - const [timestamp, setTimestamp] = useState(); - - const onClickHandler = () => { - // Use the core http service to make a response to the server API. - http.get('/api/ubl_dashboard/example').then((res) => { - setTimestamp(res.time); - // Use the core notifications service to display a success message. - notifications.toasts.addSuccess( - i18n.translate('ublDashboard.dataUpdated', { - defaultMessage: 'Data updated', - }) - ); - }); - }; - - // Render the application DOM. - // Note that `navigation.ui.TopNavMenu` is a stateful component exported on the `navigation` plugin's start contract. - return ( - - - <> - - - - - -

- -

-
-
- - - -

- -

-
-
- - -

- -

- -

- -

- - - -
-
-
-
-
- -
-
- ); -}; diff --git a/dashboard-plugin/public/index.scss b/dashboard-plugin/public/index.scss deleted file mode 100644 index ff71124..0000000 --- a/dashboard-plugin/public/index.scss +++ /dev/null @@ -1 +0,0 @@ -/* stylelint-disable no-empty-source */ diff --git a/dashboard-plugin/public/index.ts b/dashboard-plugin/public/index.ts deleted file mode 100644 index da10ad3..0000000 --- a/dashboard-plugin/public/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import './index.scss'; - -import { UblDashboardPlugin } from './plugin'; - -// This exports static code and TypeScript types, -// as well as, OpenSearch Dashboards Platform `plugin()` initializer. -export function plugin() { - return new UblDashboardPlugin(); -} -export { UblDashboardPluginSetup, UblDashboardPluginStart } from './types'; diff --git a/dashboard-plugin/public/plugin.ts b/dashboard-plugin/public/plugin.ts deleted file mode 100644 index afc2073..0000000 --- a/dashboard-plugin/public/plugin.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { i18n } from '@osd/i18n'; -import { AppMountParameters, CoreSetup, CoreStart, Plugin } from '../../../src/core/public'; -import { - UblDashboardPluginSetup, - UblDashboardPluginStart, - AppPluginStartDependencies, -} from './types'; -import { PLUGIN_NAME } from '../common'; - -export class UblDashboardPlugin - implements Plugin { - public setup(core: CoreSetup): UblDashboardPluginSetup { - // Register an application into the side navigation menu - core.application.register({ - id: 'ublDashboard', - title: PLUGIN_NAME, - async mount(params: AppMountParameters) { - // Load application bundle - const { renderApp } = await import('./application'); - // Get start services as specified in opensearch_dashboards.json - const [coreStart, depsStart] = await core.getStartServices(); - // Render the application - return renderApp(coreStart, depsStart as AppPluginStartDependencies, params); - }, - }); - - // Return methods that should be available to other plugins - return { - getGreeting() { - return i18n.translate('ublDashboard.greetingText', { - defaultMessage: 'Hello from {name}!', - values: { - name: PLUGIN_NAME, - }, - }); - }, - }; - } - - public start(core: CoreStart): UblDashboardPluginStart { - return {}; - } - - public stop() {} -} diff --git a/dashboard-plugin/public/types.ts b/dashboard-plugin/public/types.ts deleted file mode 100644 index c5c5900..0000000 --- a/dashboard-plugin/public/types.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NavigationPublicPluginStart } from '../../../src/plugins/navigation/public'; - -export interface UblDashboardPluginSetup { - getGreeting: () => string; -} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface UblDashboardPluginStart {} - -export interface AppPluginStartDependencies { - navigation: NavigationPublicPluginStart; -} diff --git a/dashboard-plugin/server/index.ts b/dashboard-plugin/server/index.ts deleted file mode 100644 index 2d602bf..0000000 --- a/dashboard-plugin/server/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { PluginInitializerContext } from '../../../src/core/server'; -import { UblDashboardPlugin } from './plugin'; - -// This exports static code and TypeScript types, -// as well as, OpenSearch Dashboards Platform `plugin()` initializer. - -export function plugin(initializerContext: PluginInitializerContext) { - return new UblDashboardPlugin(initializerContext); -} - -export { UblDashboardPluginSetup, UblDashboardPluginStart } from './types'; diff --git a/dashboard-plugin/server/plugin.ts b/dashboard-plugin/server/plugin.ts deleted file mode 100644 index 05bb60a..0000000 --- a/dashboard-plugin/server/plugin.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - PluginInitializerContext, - CoreSetup, - CoreStart, - Plugin, - Logger, -} from '../../../src/core/server'; - -import { UblDashboardPluginSetup, UblDashboardPluginStart } from './types'; -import { defineRoutes } from './routes'; - -export class UblDashboardPlugin - implements Plugin { - private readonly logger: Logger; - - constructor(initializerContext: PluginInitializerContext) { - this.logger = initializerContext.logger.get(); - } - - public setup(core: CoreSetup) { - this.logger.debug('ublDashboard: Setup'); - const router = core.http.createRouter(); - - // Register server side APIs - defineRoutes(router); - - return {}; - } - - public start(core: CoreStart) { - this.logger.debug('ublDashboard: Started'); - return {}; - } - - public stop() {} -} diff --git a/dashboard-plugin/server/routes/index.ts b/dashboard-plugin/server/routes/index.ts deleted file mode 100644 index 268ebc1..0000000 --- a/dashboard-plugin/server/routes/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { IRouter } from '../../../../src/core/server'; - -export function defineRoutes(router: IRouter) { - router.get( - { - path: '/api/ubl_dashboard/example', - validate: false, - }, - async (context, request, response) => { - return response.ok({ - body: { - time: new Date().toISOString(), - }, - }); - } - ); -} diff --git a/dashboard-plugin/server/types.ts b/dashboard-plugin/server/types.ts deleted file mode 100644 index 8fc57c1..0000000 --- a/dashboard-plugin/server/types.ts +++ /dev/null @@ -1,4 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface UblDashboardPluginSetup {} -// eslint-disable-next-line @typescript-eslint/no-empty-interface -export interface UblDashboardPluginStart {} diff --git a/dashboard-plugin/translations/ja-JP.json b/dashboard-plugin/translations/ja-JP.json deleted file mode 100644 index 75a4954..0000000 --- a/dashboard-plugin/translations/ja-JP.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "formats": { - "number": { - "currency": { - "style": "currency" - }, - "percent": { - "style": "percent" - } - }, - "date": { - "short": { - "month": "numeric", - "day": "numeric", - "year": "2-digit" - }, - "medium": { - "month": "short", - "day": "numeric", - "year": "numeric" - }, - "long": { - "month": "long", - "day": "numeric", - "year": "numeric" - }, - "full": { - "weekday": "long", - "month": "long", - "day": "numeric", - "year": "numeric" - } - }, - "time": { - "short": { - "hour": "numeric", - "minute": "numeric" - }, - "medium": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric" - }, - "long": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric", - "timeZoneName": "short" - }, - "full": { - "hour": "numeric", - "minute": "numeric", - "second": "numeric", - "timeZoneName": "short" - } - }, - "relative": { - "years": { - "units": "year" - }, - "months": { - "units": "month" - }, - "days": { - "units": "day" - }, - "hours": { - "units": "hour" - }, - "minutes": { - "units": "minute" - }, - "seconds": { - "units": "second" - } - } - }, - "messages": { - "ublDashboard.buttonText": "Translate me to Japanese" - } -} diff --git a/dashboard-plugin/tsconfig.json b/dashboard-plugin/tsconfig.json deleted file mode 100644 index 7fa0373..0000000 --- a/dashboard-plugin/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "outDir": "./target", - "skipLibCheck": true - }, - "include": [ - "index.ts", - "common/**/*.ts", - "public/**/*.ts", - "public/**/*.tsx", - "server/**/*.ts", - "../../typings/**/*" - ], - "exclude": [] -} diff --git a/docker-compose.yaml b/docker-compose.yaml index db677fb..820eab2 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,7 +2,7 @@ version: '3' services: opensearch: - build: ./search-relevance-plugin/ + build: ./ container_name: opensearch environment: discovery.type: single-node diff --git a/search-relevance-plugin/example-events.json b/example-events.json similarity index 100% rename from search-relevance-plugin/example-events.json rename to example-events.json diff --git a/search-relevance-plugin/gradle.properties b/gradle.properties similarity index 100% rename from search-relevance-plugin/gradle.properties rename to gradle.properties diff --git a/search-relevance-plugin/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from search-relevance-plugin/gradle/wrapper/gradle-wrapper.jar rename to gradle/wrapper/gradle-wrapper.jar diff --git a/search-relevance-plugin/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from search-relevance-plugin/gradle/wrapper/gradle-wrapper.properties rename to gradle/wrapper/gradle-wrapper.properties diff --git a/search-relevance-plugin/gradlew b/gradlew similarity index 100% rename from search-relevance-plugin/gradlew rename to gradlew diff --git a/search-relevance-plugin/gradlew.bat b/gradlew.bat similarity index 100% rename from search-relevance-plugin/gradlew.bat rename to gradlew.bat diff --git a/search-relevance-plugin/install-plugin.sh b/install-plugin.sh similarity index 100% rename from search-relevance-plugin/install-plugin.sh rename to install-plugin.sh diff --git a/search-relevance-plugin/instant-search.json b/instant-search.json similarity index 100% rename from search-relevance-plugin/instant-search.json rename to instant-search.json diff --git a/search-relevance-plugin/.gitignore b/search-relevance-plugin/.gitignore deleted file mode 100644 index 85a4b53..0000000 --- a/search-relevance-plugin/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -# Ignore Gradle project-specific cache directory -.gradle - -# Ignore Gradle build output directory -build - -# intellij files -.idea/ -*.iml -*.ipr -*.iws -build-idea/ -out/ \ No newline at end of file diff --git a/search-relevance-plugin/README.md b/search-relevance-plugin/README.md deleted file mode 100644 index 3541af6..0000000 --- a/search-relevance-plugin/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# search-relevance-plugin - -Build the plugin. Note that you will have to match up the JDK 11 on your system to java home in the `gradle.properties` file: - -`./gradlew build` - -Build the OpenSearch docker image and add the plugin: - -`docker compose build` - -Start the containers: - -`docker compose up` - -Initialize the `awesome` search relevance index: - -``` -curl -X PUT http://localhost:9200/_plugins/search_relevance/awesome -``` - -Send an event to the `awesome` store: - -``` -curl -X POST http://localhost:9200/_plugins/search_relevance/awesome -H "Content-Type: application/json" -d @instant-search.json -``` - -Get events: - -``` -curl http://localhost:9200/.awesome_events/_search -``` diff --git a/search-relevance-plugin/search.sh b/search.sh similarity index 100% rename from search-relevance-plugin/search.sh rename to search.sh diff --git a/search-relevance-plugin/settings.gradle b/settings.gradle similarity index 100% rename from search-relevance-plugin/settings.gradle rename to settings.gradle diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/SearchRelevancePlugin.java b/src/main/java/org/opensearch/relevance/SearchRelevancePlugin.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/SearchRelevancePlugin.java rename to src/main/java/org/opensearch/relevance/SearchRelevancePlugin.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/SettingsConstants.java b/src/main/java/org/opensearch/relevance/SettingsConstants.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/SettingsConstants.java rename to src/main/java/org/opensearch/relevance/SettingsConstants.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/action/SearchRelevanceRestHandler.java b/src/main/java/org/opensearch/relevance/action/SearchRelevanceRestHandler.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/action/SearchRelevanceRestHandler.java rename to src/main/java/org/opensearch/relevance/action/SearchRelevanceRestHandler.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/action/SearchRelevanceSearchFilter.java b/src/main/java/org/opensearch/relevance/action/SearchRelevanceSearchFilter.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/action/SearchRelevanceSearchFilter.java rename to src/main/java/org/opensearch/relevance/action/SearchRelevanceSearchFilter.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/backends/Backend.java b/src/main/java/org/opensearch/relevance/backends/Backend.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/backends/Backend.java rename to src/main/java/org/opensearch/relevance/backends/Backend.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/backends/OpenSearchBackend.java b/src/main/java/org/opensearch/relevance/backends/OpenSearchBackend.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/backends/OpenSearchBackend.java rename to src/main/java/org/opensearch/relevance/backends/OpenSearchBackend.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/events/EventManager.java b/src/main/java/org/opensearch/relevance/events/EventManager.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/events/EventManager.java rename to src/main/java/org/opensearch/relevance/events/EventManager.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/events/queues/EventQueue.java b/src/main/java/org/opensearch/relevance/events/queues/EventQueue.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/events/queues/EventQueue.java rename to src/main/java/org/opensearch/relevance/events/queues/EventQueue.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/events/queues/InternalQueue.java b/src/main/java/org/opensearch/relevance/events/queues/InternalQueue.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/events/queues/InternalQueue.java rename to src/main/java/org/opensearch/relevance/events/queues/InternalQueue.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/model/QueryRequest.java b/src/main/java/org/opensearch/relevance/model/QueryRequest.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/model/QueryRequest.java rename to src/main/java/org/opensearch/relevance/model/QueryRequest.java diff --git a/search-relevance-plugin/src/main/java/org/opensearch/relevance/model/QueryResponse.java b/src/main/java/org/opensearch/relevance/model/QueryResponse.java similarity index 100% rename from search-relevance-plugin/src/main/java/org/opensearch/relevance/model/QueryResponse.java rename to src/main/java/org/opensearch/relevance/model/QueryResponse.java diff --git a/search-relevance-plugin/src/main/resources/org/opensearch/relevance/backends/events-mapping.json b/src/main/resources/org/opensearch/relevance/backends/events-mapping.json similarity index 100% rename from search-relevance-plugin/src/main/resources/org/opensearch/relevance/backends/events-mapping.json rename to src/main/resources/org/opensearch/relevance/backends/events-mapping.json diff --git a/search-relevance-plugin/src/main/resources/org/opensearch/relevance/backends/queries-mapping.json b/src/main/resources/org/opensearch/relevance/backends/queries-mapping.json similarity index 100% rename from search-relevance-plugin/src/main/resources/org/opensearch/relevance/backends/queries-mapping.json rename to src/main/resources/org/opensearch/relevance/backends/queries-mapping.json diff --git a/search-relevance-plugin/src/yamlRestTest/java/org/opensearch/rest/action/SearchRelevanceClientYamlTestSuiteIT.java b/src/yamlRestTest/java/org/opensearch/rest/action/SearchRelevanceClientYamlTestSuiteIT.java similarity index 100% rename from search-relevance-plugin/src/yamlRestTest/java/org/opensearch/rest/action/SearchRelevanceClientYamlTestSuiteIT.java rename to src/yamlRestTest/java/org/opensearch/rest/action/SearchRelevanceClientYamlTestSuiteIT.java diff --git a/search-relevance-plugin/src/yamlRestTest/resources/rest-api-spec/api/_plugins.search_relevance.json b/src/yamlRestTest/resources/rest-api-spec/api/_plugins.search_relevance.json similarity index 100% rename from search-relevance-plugin/src/yamlRestTest/resources/rest-api-spec/api/_plugins.search_relevance.json rename to src/yamlRestTest/resources/rest-api-spec/api/_plugins.search_relevance.json diff --git a/search-relevance-plugin/src/yamlRestTest/resources/rest-api-spec/test/_plugins.search_relevance/10_basic.yml b/src/yamlRestTest/resources/rest-api-spec/test/_plugins.search_relevance/10_basic.yml similarity index 100% rename from search-relevance-plugin/src/yamlRestTest/resources/rest-api-spec/test/_plugins.search_relevance/10_basic.yml rename to src/yamlRestTest/resources/rest-api-spec/test/_plugins.search_relevance/10_basic.yml