|
|
@@ -20,6 +20,7 @@ import org.elasticsearch.common.settings.IndexScopedSettings;
|
|
|
import org.elasticsearch.common.settings.Setting;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.common.settings.SettingsFilter;
|
|
|
+import org.elasticsearch.common.util.FeatureFlag;
|
|
|
import org.elasticsearch.env.Environment;
|
|
|
import org.elasticsearch.env.NodeEnvironment;
|
|
|
import org.elasticsearch.indices.SystemIndexDescriptor;
|
|
|
@@ -52,6 +53,9 @@ import org.elasticsearch.xpack.application.analytics.action.TransportPostAnalyti
|
|
|
import org.elasticsearch.xpack.application.analytics.action.TransportPutAnalyticsCollectionAction;
|
|
|
import org.elasticsearch.xpack.application.analytics.ingest.AnalyticsEventIngestConfig;
|
|
|
import org.elasticsearch.xpack.application.rules.QueryRulesIndexService;
|
|
|
+import org.elasticsearch.xpack.application.rules.action.PutQueryRulesetAction;
|
|
|
+import org.elasticsearch.xpack.application.rules.action.RestPutQueryRulesetAction;
|
|
|
+import org.elasticsearch.xpack.application.rules.action.TransportPutQueryRulesetAction;
|
|
|
import org.elasticsearch.xpack.application.search.SearchApplicationIndexService;
|
|
|
import org.elasticsearch.xpack.application.search.action.DeleteSearchApplicationAction;
|
|
|
import org.elasticsearch.xpack.application.search.action.GetSearchApplicationAction;
|
|
|
@@ -76,6 +80,7 @@ import org.elasticsearch.xpack.core.XPackSettings;
|
|
|
import org.elasticsearch.xpack.core.action.XPackInfoFeatureAction;
|
|
|
import org.elasticsearch.xpack.core.action.XPackUsageFeatureAction;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Collection;
|
|
|
import java.util.Collections;
|
|
|
@@ -90,17 +95,18 @@ public class EnterpriseSearch extends Plugin implements ActionPlugin, SystemInde
|
|
|
|
|
|
public static final String BEHAVIORAL_ANALYTICS_API_ENDPOINT = APPLICATION_API_ENDPOINT + "/analytics";
|
|
|
|
|
|
+ public static final String QUERY_RULES_API_ENDPOINT = "_query_rules";
|
|
|
+
|
|
|
private static final Logger logger = LogManager.getLogger(EnterpriseSearch.class);
|
|
|
|
|
|
public static final String FEATURE_NAME = "ent_search";
|
|
|
|
|
|
private final boolean enabled;
|
|
|
|
|
|
- private final boolean queryRulesEnabled;
|
|
|
+ private static final FeatureFlag QUERY_RULES_FEATURE_FLAG = new FeatureFlag("query_rules");
|
|
|
|
|
|
public EnterpriseSearch(Settings settings) {
|
|
|
this.enabled = XPackSettings.ENTERPRISE_SEARCH_ENABLED.get(settings);
|
|
|
- this.queryRulesEnabled = XPackSettings.ENTERPRISE_SEARCH_QUERY_RULES_ENABLED.get(settings);
|
|
|
}
|
|
|
|
|
|
protected XPackLicenseState getLicenseState() {
|
|
|
@@ -114,20 +120,29 @@ public class EnterpriseSearch extends Plugin implements ActionPlugin, SystemInde
|
|
|
if (enabled == false) {
|
|
|
return List.of(usageAction, infoAction);
|
|
|
}
|
|
|
- return List.of(
|
|
|
- new ActionHandler<>(PutAnalyticsCollectionAction.INSTANCE, TransportPutAnalyticsCollectionAction.class),
|
|
|
- new ActionHandler<>(GetAnalyticsCollectionAction.INSTANCE, TransportGetAnalyticsCollectionAction.class),
|
|
|
- new ActionHandler<>(DeleteAnalyticsCollectionAction.INSTANCE, TransportDeleteAnalyticsCollectionAction.class),
|
|
|
- new ActionHandler<>(PostAnalyticsEventAction.INSTANCE, TransportPostAnalyticsEventAction.class),
|
|
|
- new ActionHandler<>(DeleteSearchApplicationAction.INSTANCE, TransportDeleteSearchApplicationAction.class),
|
|
|
- new ActionHandler<>(GetSearchApplicationAction.INSTANCE, TransportGetSearchApplicationAction.class),
|
|
|
- new ActionHandler<>(ListSearchApplicationAction.INSTANCE, TransportListSearchApplicationAction.class),
|
|
|
- new ActionHandler<>(PutSearchApplicationAction.INSTANCE, TransportPutSearchApplicationAction.class),
|
|
|
- new ActionHandler<>(QuerySearchApplicationAction.INSTANCE, TransportQuerySearchApplicationAction.class),
|
|
|
- new ActionHandler<>(RenderSearchApplicationQueryAction.INSTANCE, TransportRenderSearchApplicationQueryAction.class),
|
|
|
- usageAction,
|
|
|
- infoAction
|
|
|
+
|
|
|
+ final List<ActionHandler<? extends ActionRequest, ? extends ActionResponse>> actionHandlers = new ArrayList<>(
|
|
|
+ List.of(
|
|
|
+ new ActionHandler<>(PutAnalyticsCollectionAction.INSTANCE, TransportPutAnalyticsCollectionAction.class),
|
|
|
+ new ActionHandler<>(GetAnalyticsCollectionAction.INSTANCE, TransportGetAnalyticsCollectionAction.class),
|
|
|
+ new ActionHandler<>(DeleteAnalyticsCollectionAction.INSTANCE, TransportDeleteAnalyticsCollectionAction.class),
|
|
|
+ new ActionHandler<>(PostAnalyticsEventAction.INSTANCE, TransportPostAnalyticsEventAction.class),
|
|
|
+ new ActionHandler<>(DeleteSearchApplicationAction.INSTANCE, TransportDeleteSearchApplicationAction.class),
|
|
|
+ new ActionHandler<>(GetSearchApplicationAction.INSTANCE, TransportGetSearchApplicationAction.class),
|
|
|
+ new ActionHandler<>(ListSearchApplicationAction.INSTANCE, TransportListSearchApplicationAction.class),
|
|
|
+ new ActionHandler<>(PutSearchApplicationAction.INSTANCE, TransportPutSearchApplicationAction.class),
|
|
|
+ new ActionHandler<>(QuerySearchApplicationAction.INSTANCE, TransportQuerySearchApplicationAction.class),
|
|
|
+ new ActionHandler<>(RenderSearchApplicationQueryAction.INSTANCE, TransportRenderSearchApplicationQueryAction.class),
|
|
|
+ usageAction,
|
|
|
+ infoAction
|
|
|
+ )
|
|
|
);
|
|
|
+
|
|
|
+ if (QUERY_RULES_FEATURE_FLAG.isEnabled()) {
|
|
|
+ actionHandlers.add(new ActionHandler<>(PutQueryRulesetAction.INSTANCE, TransportPutQueryRulesetAction.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ return Collections.unmodifiableList(actionHandlers);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -144,18 +159,27 @@ public class EnterpriseSearch extends Plugin implements ActionPlugin, SystemInde
|
|
|
if (enabled == false) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
- return List.of(
|
|
|
- new RestGetSearchApplicationAction(getLicenseState()),
|
|
|
- new RestListSearchApplicationAction(getLicenseState()),
|
|
|
- new RestPutSearchApplicationAction(getLicenseState()),
|
|
|
- new RestDeleteSearchApplicationAction(getLicenseState()),
|
|
|
- new RestQuerySearchApplicationAction(getLicenseState()),
|
|
|
- new RestPutAnalyticsCollectionAction(getLicenseState()),
|
|
|
- new RestGetAnalyticsCollectionAction(getLicenseState()),
|
|
|
- new RestDeleteAnalyticsCollectionAction(getLicenseState()),
|
|
|
- new RestPostAnalyticsEventAction(getLicenseState()),
|
|
|
- new RestRenderSearchApplicationQueryAction(getLicenseState())
|
|
|
+
|
|
|
+ final List<RestHandler> restHandlers = new ArrayList<>(
|
|
|
+ List.of(
|
|
|
+ new RestPutAnalyticsCollectionAction(getLicenseState()),
|
|
|
+ new RestGetAnalyticsCollectionAction(getLicenseState()),
|
|
|
+ new RestDeleteAnalyticsCollectionAction(getLicenseState()),
|
|
|
+ new RestPostAnalyticsEventAction(getLicenseState()),
|
|
|
+ new RestDeleteSearchApplicationAction(getLicenseState()),
|
|
|
+ new RestGetSearchApplicationAction(getLicenseState()),
|
|
|
+ new RestListSearchApplicationAction(getLicenseState()),
|
|
|
+ new RestPutSearchApplicationAction(getLicenseState()),
|
|
|
+ new RestQuerySearchApplicationAction(getLicenseState()),
|
|
|
+ new RestRenderSearchApplicationQueryAction(getLicenseState())
|
|
|
+ )
|
|
|
);
|
|
|
+
|
|
|
+ if (QUERY_RULES_FEATURE_FLAG.isEnabled()) {
|
|
|
+ restHandlers.add(new RestPutQueryRulesetAction(getLicenseState()));
|
|
|
+ }
|
|
|
+
|
|
|
+ return Collections.unmodifiableList(restHandlers);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -192,7 +216,7 @@ public class EnterpriseSearch extends Plugin implements ActionPlugin, SystemInde
|
|
|
|
|
|
@Override
|
|
|
public Collection<SystemIndexDescriptor> getSystemIndexDescriptors(Settings settings) {
|
|
|
- if (queryRulesEnabled) {
|
|
|
+ if (QUERY_RULES_FEATURE_FLAG.isEnabled()) {
|
|
|
return Arrays.asList(
|
|
|
SearchApplicationIndexService.getSystemIndexDescriptor(),
|
|
|
QueryRulesIndexService.getSystemIndexDescriptor()
|