diff --git a/rest-api-spec/src/main/resources/rest-api-spec/api/query_ruleset.put.json b/rest-api-spec/src/main/resources/rest-api-spec/api/query_ruleset.put.json index 7967a9b90a707..912681f703282 100644 --- a/rest-api-spec/src/main/resources/rest-api-spec/api/query_ruleset.put.json +++ b/rest-api-spec/src/main/resources/rest-api-spec/api/query_ruleset.put.json @@ -31,12 +31,6 @@ } ] }, - "params": { - "create": { - "type": "boolean", - "description": "If true, requires that a query_ruleset with the specified resource_id does not already exist. (default: false)" - } - }, "body": { "description": "The query ruleset configuration, including `rules`", "required": true diff --git a/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/200_query_ruleset_put.yml b/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/200_query_ruleset_put.yml index 0225735128b61..9b515a86da76e 100644 --- a/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/200_query_ruleset_put.yml +++ b/x-pack/plugin/ent-search/qa/rest/src/yamlRestTest/resources/rest-api-spec/test/entsearch/200_query_ruleset_put.yml @@ -37,7 +37,6 @@ 'Create Query Ruleset - Resource already exists': - do: query_ruleset.put: - create: true ruleset_id: test-query-ruleset-recreating body: ruleset_id: 'test-query-ruleset-recreating' @@ -55,9 +54,7 @@ - match: { result: 'created' } - do: - catch: conflict query_ruleset.put: - create: true ruleset_id: test-query-ruleset-recreating body: ruleset_id: 'test-query-ruleset-recreating' @@ -72,7 +69,7 @@ ids: - 'id2' - - match: { error.type: 'version_conflict_engine_exception' } + - match: { result: 'updated' } --- 'Create Query Ruleset - Insufficient privilege': @@ -84,7 +81,6 @@ headers: { Authorization: "Basic ZW50c2VhcmNoLXVzZXI6ZW50c2VhcmNoLXVzZXItcGFzc3dvcmQ=" } # user query_ruleset.put: ruleset_id: forbidden-query-ruleset - create: true body: ruleset_id: 'forbidden-query-ruleset' rules: diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexService.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexService.java index 15855ff09d4fb..44e8f66b17511 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexService.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexService.java @@ -207,15 +207,13 @@ private List parseCriteria(List> rawCrite * Creates or updates the {@link QueryRuleset} in the underlying index. * * @param queryRuleset The query ruleset object. - * @param create If true, a query ruleset with the specified unique identifier must not already exist * @param listener The action listener to invoke on response/failure. */ - public void putQueryRuleset(QueryRuleset queryRuleset, boolean create, ActionListener listener) { + public void putQueryRuleset(QueryRuleset queryRuleset, ActionListener listener) { try { - DocWriteRequest.OpType opType = (create ? DocWriteRequest.OpType.CREATE : DocWriteRequest.OpType.INDEX); final IndexRequest indexRequest = new IndexRequest(QUERY_RULES_ALIAS_NAME).opType(DocWriteRequest.OpType.INDEX) .id(queryRuleset.id()) - .opType(opType) + .opType(DocWriteRequest.OpType.INDEX) .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE) .source(queryRuleset.toXContent(jsonBuilder(), ToXContent.EMPTY_PARAMS)); clientWithOrigin.index(indexRequest, listener); diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetAction.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetAction.java index eac7a5705bb60..75b53da4e4bc4 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetAction.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetAction.java @@ -41,22 +41,18 @@ public PutQueryRulesetAction() { public static class Request extends ActionRequest { private final QueryRuleset queryRuleset; - private final boolean create; public Request(StreamInput in) throws IOException { super(in); this.queryRuleset = new QueryRuleset(in); - this.create = in.readBoolean(); } - public Request(QueryRuleset queryRuleset, boolean create) { + public Request(QueryRuleset queryRuleset) { this.queryRuleset = queryRuleset; - this.create = create; } - public Request(String rulesetId, boolean create, BytesReference content, XContentType contentType) { + public Request(String rulesetId, BytesReference content, XContentType contentType) { this.queryRuleset = QueryRuleset.fromXContentBytes(rulesetId, content, contentType); - this.create = create; } @Override @@ -79,28 +75,23 @@ public ActionRequestValidationException validate() { public void writeTo(StreamOutput out) throws IOException { super.writeTo(out); queryRuleset.writeTo(out); - out.writeBoolean(create); } public QueryRuleset queryRuleset() { return queryRuleset; } - public boolean create() { - return create; - } - @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Request request = (Request) o; - return create == request.create && Objects.equals(queryRuleset, request.queryRuleset); + return Objects.equals(queryRuleset, request.queryRuleset); } @Override public int hashCode() { - return Objects.hash(queryRuleset, create); + return Objects.hash(queryRuleset); } } diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/RestPutQueryRulesetAction.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/RestPutQueryRulesetAction.java index fcb22fcd22929..7dc42753c9796 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/RestPutQueryRulesetAction.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/RestPutQueryRulesetAction.java @@ -42,7 +42,6 @@ public List routes() { protected RestChannelConsumer innerPrepareRequest(RestRequest restRequest, NodeClient client) throws IOException { PutQueryRulesetAction.Request request = new PutQueryRulesetAction.Request( restRequest.param("ruleset_id"), - restRequest.paramAsBoolean("create", false), restRequest.content(), restRequest.getXContentType() ); diff --git a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/TransportPutQueryRulesetAction.java b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/TransportPutQueryRulesetAction.java index 0bfaf544b0386..e6d27671960b3 100644 --- a/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/TransportPutQueryRulesetAction.java +++ b/x-pack/plugin/ent-search/src/main/java/org/elasticsearch/xpack/application/rules/action/TransportPutQueryRulesetAction.java @@ -29,8 +29,7 @@ public TransportPutQueryRulesetAction(TransportService transportService, ActionF @Override protected void doExecute(Task task, PutQueryRulesetAction.Request request, ActionListener listener) { QueryRuleset queryRuleset = request.queryRuleset(); - boolean create = request.create(); - systemIndexService.putQueryRuleset(queryRuleset, create, listener.map(r -> new PutQueryRulesetAction.Response(r.getResult()))); + systemIndexService.putQueryRuleset(queryRuleset, listener.map(r -> new PutQueryRulesetAction.Response(r.getResult()))); } } diff --git a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexServiceTests.java b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexServiceTests.java index 6d4d2fabaa6e5..0046686cf53df 100644 --- a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexServiceTests.java +++ b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/QueryRulesIndexServiceTests.java @@ -12,7 +12,6 @@ import org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.index.engine.VersionConflictEngineException; import org.elasticsearch.indices.SystemIndexDescriptor; import org.elasticsearch.plugins.Plugin; import org.elasticsearch.plugins.SystemIndexPlugin; @@ -59,31 +58,6 @@ public void testEmptyState() throws Exception { assertThat(listResults.totalResults(), equalTo(0L)); } - public void testCreateQueryRuleset() throws Exception { - final QueryRule myQueryRule1 = new QueryRule( - "my_rule1", - QueryRuleType.PINNED, - List.of(new QueryRuleCriteria(CriteriaType.EXACT, "query_string", "foo")), - Map.of("ids", List.of("id1", "id2")) - ); - final QueryRule myQueryRule2 = new QueryRule( - "my_rule2", - QueryRuleType.PINNED, - List.of(new QueryRuleCriteria(CriteriaType.EXACT, "query_string", "bar")), - Map.of("ids", List.of("id3", "id4")) - ); - final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset", List.of(myQueryRule1, myQueryRule2)); - - IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset, true); - assertThat(resp.status(), equalTo(RestStatus.CREATED)); - assertThat(resp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME)); - - QueryRuleset getQueryRuleset = awaitGetQueryRuleset(myQueryRuleset.id()); - assertThat(getQueryRuleset, equalTo(myQueryRuleset)); - - expectThrows(VersionConflictEngineException.class, () -> awaitPutQueryRuleset(myQueryRuleset, true)); - } - public void testUpdateQueryRuleset() throws Exception { { final QueryRule myQueryRule1 = new QueryRule( @@ -93,7 +67,7 @@ public void testUpdateQueryRuleset() throws Exception { Map.of("ids", List.of("id1", "id2")) ); final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset", Collections.singletonList(myQueryRule1)); - IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset, false); + IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset); assertThat(resp.status(), anyOf(equalTo(RestStatus.CREATED), equalTo(RestStatus.OK))); assertThat(resp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME)); @@ -114,7 +88,7 @@ public void testUpdateQueryRuleset() throws Exception { Map.of("docs", List.of(Map.of("_index", "my_index1", "_id", "id3"), Map.of("_index", "my_index2", "_id", "id4"))) ); final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset", List.of(myQueryRule1, myQueryRule2)); - IndexResponse newResp = awaitPutQueryRuleset(myQueryRuleset, false); + IndexResponse newResp = awaitPutQueryRuleset(myQueryRuleset); assertThat(newResp.status(), equalTo(RestStatus.OK)); assertThat(newResp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME)); QueryRuleset getQueryRuleset = awaitGetQueryRuleset(myQueryRuleset.id()); @@ -140,7 +114,7 @@ public void testListQueryRulesets() throws Exception { ); final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset_" + i, rules); - IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset, false); + IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset); assertThat(resp.status(), equalTo(RestStatus.CREATED)); assertThat(resp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME)); } @@ -188,7 +162,7 @@ public void testDeleteQueryRuleset() throws Exception { Map.of("ids", List.of("id3", "id4")) ); final QueryRuleset myQueryRuleset = new QueryRuleset("my_ruleset", List.of(myQueryRule1, myQueryRule2)); - IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset, false); + IndexResponse resp = awaitPutQueryRuleset(myQueryRuleset); assertThat(resp.status(), anyOf(equalTo(RestStatus.CREATED), equalTo(RestStatus.OK))); assertThat(resp.getIndex(), equalTo(QUERY_RULES_CONCRETE_INDEX_NAME)); @@ -201,11 +175,11 @@ public void testDeleteQueryRuleset() throws Exception { expectThrows(ResourceNotFoundException.class, () -> awaitGetQueryRuleset("my_ruleset")); } - private IndexResponse awaitPutQueryRuleset(QueryRuleset queryRuleset, boolean create) throws Exception { + private IndexResponse awaitPutQueryRuleset(QueryRuleset queryRuleset) throws Exception { CountDownLatch latch = new CountDownLatch(1); final AtomicReference resp = new AtomicReference<>(null); final AtomicReference exc = new AtomicReference<>(null); - queryRulesIndexService.putQueryRuleset(queryRuleset, create, new ActionListener<>() { + queryRulesIndexService.putQueryRuleset(queryRuleset, new ActionListener<>() { @Override public void onResponse(IndexResponse indexResponse) { resp.set(indexResponse); diff --git a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetActionRequestSerializingTests.java b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetActionRequestSerializingTests.java index 92f72a800d2bd..bd99d366db26b 100644 --- a/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetActionRequestSerializingTests.java +++ b/x-pack/plugin/ent-search/src/test/java/org/elasticsearch/xpack/application/rules/action/PutQueryRulesetActionRequestSerializingTests.java @@ -20,7 +20,7 @@ protected Writeable.Reader instanceReader() { @Override protected PutQueryRulesetAction.Request createTestInstance() { - return new PutQueryRulesetAction.Request(SearchApplicationTestUtils.randomQueryRuleset(), randomBoolean()); + return new PutQueryRulesetAction.Request(SearchApplicationTestUtils.randomQueryRuleset()); } @Override