* [ML] renames */inference* apis to */trained_models* (#63097) This commit renames all `inference` CRUD APIs to `trained_models`. This aligns with internal terminology, documentation, and use-cases.
This commit is contained in:
parent
535f8a434b
commit
cfcf973259
|
@ -758,7 +758,7 @@ final class MLRequestConverters {
|
|||
|
||||
static Request getTrainedModels(GetTrainedModelsRequest getTrainedModelsRequest) {
|
||||
String endpoint = new EndpointBuilder()
|
||||
.addPathPartAsIs("_ml", "inference")
|
||||
.addPathPartAsIs("_ml", "trained_models")
|
||||
.addPathPart(Strings.collectionToCommaDelimitedString(getTrainedModelsRequest.getIds()))
|
||||
.build();
|
||||
RequestConverters.Params params = new RequestConverters.Params();
|
||||
|
@ -796,7 +796,7 @@ final class MLRequestConverters {
|
|||
|
||||
static Request getTrainedModelsStats(GetTrainedModelsStatsRequest getTrainedModelsStatsRequest) {
|
||||
String endpoint = new EndpointBuilder()
|
||||
.addPathPartAsIs("_ml", "inference")
|
||||
.addPathPartAsIs("_ml", "trained_models")
|
||||
.addPathPart(Strings.collectionToCommaDelimitedString(getTrainedModelsStatsRequest.getIds()))
|
||||
.addPathPart("_stats")
|
||||
.build();
|
||||
|
@ -821,7 +821,7 @@ final class MLRequestConverters {
|
|||
|
||||
static Request deleteTrainedModel(DeleteTrainedModelRequest deleteRequest) {
|
||||
String endpoint = new EndpointBuilder()
|
||||
.addPathPartAsIs("_ml", "inference")
|
||||
.addPathPartAsIs("_ml", "trained_models")
|
||||
.addPathPart(deleteRequest.getId())
|
||||
.build();
|
||||
return new Request(HttpDelete.METHOD_NAME, endpoint);
|
||||
|
@ -829,7 +829,7 @@ final class MLRequestConverters {
|
|||
|
||||
static Request putTrainedModel(PutTrainedModelRequest putTrainedModelRequest) throws IOException {
|
||||
String endpoint = new EndpointBuilder()
|
||||
.addPathPartAsIs("_ml", "inference")
|
||||
.addPathPartAsIs("_ml", "trained_models")
|
||||
.addPathPart(putTrainedModelRequest.getTrainedModelConfig().getModelId())
|
||||
.build();
|
||||
Request request = new Request(HttpPut.METHOD_NAME, endpoint);
|
||||
|
|
|
@ -2395,7 +2395,7 @@ public final class MachineLearningClient {
|
|||
* Gets trained model configs
|
||||
* <p>
|
||||
* For additional info
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-inference.html">
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html">
|
||||
* GET Trained Model Configs documentation</a>
|
||||
*
|
||||
* @param request The {@link GetTrainedModelsRequest}
|
||||
|
@ -2415,7 +2415,7 @@ public final class MachineLearningClient {
|
|||
* Gets trained model configs asynchronously and notifies listener upon completion
|
||||
* <p>
|
||||
* For additional info
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-inference.html">
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html">
|
||||
* GET Trained Model Configs documentation</a>
|
||||
*
|
||||
* @param request The {@link GetTrainedModelsRequest}
|
||||
|
@ -2480,7 +2480,7 @@ public final class MachineLearningClient {
|
|||
* Gets trained model stats
|
||||
* <p>
|
||||
* For additional info
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-inference-stats.html">
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html">
|
||||
* GET Trained Model Stats documentation</a>
|
||||
*
|
||||
* @param request The {@link GetTrainedModelsStatsRequest}
|
||||
|
@ -2500,7 +2500,7 @@ public final class MachineLearningClient {
|
|||
* Gets trained model stats asynchronously and notifies listener upon completion
|
||||
* <p>
|
||||
* For additional info
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-inference-stats.html">
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html">
|
||||
* GET Trained Model Stats documentation</a>
|
||||
*
|
||||
* @param request The {@link GetTrainedModelsStatsRequest}
|
||||
|
@ -2523,7 +2523,7 @@ public final class MachineLearningClient {
|
|||
* Deletes the given Trained Model
|
||||
* <p>
|
||||
* For additional info
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-inference.html">
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models.html">
|
||||
* DELETE Trained Model documentation</a>
|
||||
*
|
||||
* @param request The {@link DeleteTrainedModelRequest}
|
||||
|
@ -2543,7 +2543,7 @@ public final class MachineLearningClient {
|
|||
* Deletes the given Trained Model asynchronously and notifies listener upon completion
|
||||
* <p>
|
||||
* For additional info
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-inference.html">
|
||||
* see <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models.html">
|
||||
* DELETE Trained Model documentation</a>
|
||||
*
|
||||
* @param request The {@link DeleteTrainedModelRequest}
|
||||
|
|
|
@ -900,7 +900,7 @@ public class MLRequestConvertersTests extends ESTestCase {
|
|||
|
||||
Request request = MLRequestConverters.getTrainedModels(getRequest);
|
||||
assertEquals(HttpGet.METHOD_NAME, request.getMethod());
|
||||
assertEquals("/_ml/inference/" + modelId1 + "," + modelId2 + "," + modelId3, request.getEndpoint());
|
||||
assertEquals("/_ml/trained_models/" + modelId1 + "," + modelId2 + "," + modelId3, request.getEndpoint());
|
||||
assertThat(request.getParameters(),
|
||||
allOf(
|
||||
hasEntry("from", "100"),
|
||||
|
@ -923,7 +923,7 @@ public class MLRequestConvertersTests extends ESTestCase {
|
|||
|
||||
Request request = MLRequestConverters.getTrainedModelsStats(getRequest);
|
||||
assertEquals(HttpGet.METHOD_NAME, request.getMethod());
|
||||
assertEquals("/_ml/inference/" + modelId1 + "," + modelId2 + "," + modelId3 + "/_stats", request.getEndpoint());
|
||||
assertEquals("/_ml/trained_models/" + modelId1 + "," + modelId2 + "," + modelId3 + "/_stats", request.getEndpoint());
|
||||
assertThat(request.getParameters(),
|
||||
allOf(
|
||||
hasEntry("from", "100"),
|
||||
|
@ -937,7 +937,7 @@ public class MLRequestConvertersTests extends ESTestCase {
|
|||
DeleteTrainedModelRequest deleteRequest = new DeleteTrainedModelRequest(randomAlphaOfLength(10));
|
||||
Request request = MLRequestConverters.deleteTrainedModel(deleteRequest);
|
||||
assertEquals(HttpDelete.METHOD_NAME, request.getMethod());
|
||||
assertEquals("/_ml/inference/" + deleteRequest.getId(), request.getEndpoint());
|
||||
assertEquals("/_ml/trained_models/" + deleteRequest.getId(), request.getEndpoint());
|
||||
assertNull(request.getEntity());
|
||||
}
|
||||
|
||||
|
@ -948,7 +948,7 @@ public class MLRequestConvertersTests extends ESTestCase {
|
|||
Request request = MLRequestConverters.putTrainedModel(putTrainedModelRequest);
|
||||
|
||||
assertEquals(HttpPut.METHOD_NAME, request.getMethod());
|
||||
assertThat(request.getEndpoint(), equalTo("/_ml/inference/" + trainedModelConfig.getModelId()));
|
||||
assertThat(request.getEndpoint(), equalTo("/_ml/trained_models/" + trainedModelConfig.getModelId()));
|
||||
try (XContentParser parser = createParser(JsonXContent.jsonXContent, request.getEntity().getContent())) {
|
||||
TrainedModelConfig parsedTrainedModelConfig = TrainedModelConfig.PARSER.apply(parser, null).build();
|
||||
assertThat(parsedTrainedModelConfig, equalTo(trainedModelConfig));
|
||||
|
|
|
@ -2455,7 +2455,7 @@ public class MachineLearningIT extends ESRestHighLevelClientTestCase {
|
|||
|
||||
public void testDeleteTrainedModel() throws Exception {
|
||||
MachineLearningClient machineLearningClient = highLevelClient().machineLearning();
|
||||
String modelId = "delete-trained-model-test";
|
||||
String modelId = "delete-trained-models-test";
|
||||
putTrainedModel(modelId);
|
||||
|
||||
GetTrainedModelsResponse getTrainedModelsResponse = execute(
|
||||
|
|
|
@ -3901,17 +3901,17 @@ public class MlClientDocumentationIT extends ESRestHighLevelClientTestCase {
|
|||
RestHighLevelClient client = highLevelClient();
|
||||
{
|
||||
putTrainedModel("my-trained-model");
|
||||
// tag::delete-trained-model-request
|
||||
// tag::delete-trained-models-request
|
||||
DeleteTrainedModelRequest request = new DeleteTrainedModelRequest("my-trained-model"); // <1>
|
||||
// end::delete-trained-model-request
|
||||
// end::delete-trained-models-request
|
||||
|
||||
// tag::delete-trained-model-execute
|
||||
// tag::delete-trained-models-execute
|
||||
AcknowledgedResponse response = client.machineLearning().deleteTrainedModel(request, RequestOptions.DEFAULT);
|
||||
// end::delete-trained-model-execute
|
||||
// end::delete-trained-models-execute
|
||||
|
||||
// tag::delete-trained-model-response
|
||||
// tag::delete-trained-models-response
|
||||
boolean deleted = response.isAcknowledged();
|
||||
// end::delete-trained-model-response
|
||||
// end::delete-trained-models-response
|
||||
|
||||
assertThat(deleted, is(true));
|
||||
}
|
||||
|
@ -3919,7 +3919,7 @@ public class MlClientDocumentationIT extends ESRestHighLevelClientTestCase {
|
|||
putTrainedModel("my-trained-model");
|
||||
DeleteTrainedModelRequest request = new DeleteTrainedModelRequest("my-trained-model");
|
||||
|
||||
// tag::delete-trained-model-execute-listener
|
||||
// tag::delete-trained-models-execute-listener
|
||||
ActionListener<AcknowledgedResponse> listener = new ActionListener<AcknowledgedResponse>() {
|
||||
@Override
|
||||
public void onResponse(AcknowledgedResponse response) {
|
||||
|
@ -3931,15 +3931,15 @@ public class MlClientDocumentationIT extends ESRestHighLevelClientTestCase {
|
|||
// <2>
|
||||
}
|
||||
};
|
||||
// end::delete-trained-model-execute-listener
|
||||
// end::delete-trained-models-execute-listener
|
||||
|
||||
// Replace the empty listener by a blocking listener in test
|
||||
CountDownLatch latch = new CountDownLatch(1);
|
||||
listener = new LatchedActionListener<>(listener, latch);
|
||||
|
||||
// tag::delete-trained-model-execute-async
|
||||
// tag::delete-trained-models-execute-async
|
||||
client.machineLearning().deleteTrainedModelAsync(request, RequestOptions.DEFAULT, listener); // <1>
|
||||
// end::delete-trained-model-execute-async
|
||||
// end::delete-trained-models-execute-async
|
||||
|
||||
assertTrue(latch.await(30L, TimeUnit.SECONDS));
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--
|
||||
:api: delete-trained-model
|
||||
:api: delete-trained-models
|
||||
:request: DeleteTrainedModelRequest
|
||||
:response: AcknowledgedResponse
|
||||
--
|
|
@ -333,7 +333,7 @@ The Java High Level REST Client supports the following Machine Learning APIs:
|
|||
* <<{upid}-get-trained-models>>
|
||||
* <<{upid}-put-trained-model>>
|
||||
* <<{upid}-get-trained-models-stats>>
|
||||
* <<{upid}-delete-trained-model>>
|
||||
* <<{upid}-delete-trained-models>>
|
||||
* <<{upid}-put-filter>>
|
||||
* <<{upid}-get-filters>>
|
||||
* <<{upid}-update-filter>>
|
||||
|
@ -391,7 +391,7 @@ include::ml/explain-data-frame-analytics.asciidoc[]
|
|||
include::ml/get-trained-models.asciidoc[]
|
||||
include::ml/put-trained-model.asciidoc[]
|
||||
include::ml/get-trained-models-stats.asciidoc[]
|
||||
include::ml/delete-trained-model.asciidoc[]
|
||||
include::ml/delete-trained-models.asciidoc[]
|
||||
include::ml/put-filter.asciidoc[]
|
||||
include::ml/get-filters.asciidoc[]
|
||||
include::ml/update-filter.asciidoc[]
|
||||
|
|
|
@ -8,8 +8,8 @@ experimental::[]
|
|||
A parent pipeline aggregation which loads a pre-trained model and performs
|
||||
{infer} on the collated result fields from the parent bucket aggregation.
|
||||
|
||||
To use the {infer} bucket aggregation, you need to have the same security
|
||||
privileges that are required for using the <<get-inference>>.
|
||||
To use the {infer} bucket aggregation, you need to have the same security
|
||||
privileges that are required for using the <<get-trained-models>>.
|
||||
|
||||
[[inference-bucket-agg-syntax]]
|
||||
==== Syntax
|
||||
|
@ -53,8 +53,8 @@ See <<buckets-path-syntax>> for more details | Required | -
|
|||
|
||||
==== Configuration options for {infer} models
|
||||
|
||||
The `inference_config` setting is optional and usually isn't required as the
|
||||
pre-trained models come equipped with sensible defaults. In the context of
|
||||
The `inference_config` setting is optional and usually isn't required as the
|
||||
pre-trained models come equipped with sensible defaults. In the context of
|
||||
aggregations some options can overridden for each of the 2 types of model.
|
||||
|
||||
[discrete]
|
||||
|
@ -83,10 +83,10 @@ include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=inference-config-classification
|
|||
|
||||
|
||||
[[inference-bucket-agg-example]]
|
||||
==== Example
|
||||
==== Example
|
||||
|
||||
The following snippet aggregates a web log by `client_ip` and extracts a number
|
||||
of features via metric and bucket sub-aggregations as input to the {infer}
|
||||
The following snippet aggregates a web log by `client_ip` and extracts a number
|
||||
of features via metric and bucket sub-aggregations as input to the {infer}
|
||||
aggregation configured with a model trained to identify suspicious client IPs:
|
||||
|
||||
[source,console]
|
||||
|
@ -178,5 +178,5 @@ GET kibana_sample_data_logs/_search
|
|||
|
||||
<1> A composite bucket aggregation that aggregates the data by `client_ip`.
|
||||
<2> A series of metrics and bucket sub-aggregations.
|
||||
<3> {infer-cap} bucket aggregation that contains the model ID and maps the
|
||||
aggregation names to the model's input fields.
|
||||
<3> {infer-cap} bucket aggregation that contains the model ID and maps the
|
||||
aggregation names to the model's input fields.
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
[role="xpack"]
|
||||
[testenv="basic"]
|
||||
[[delete-inference]]
|
||||
[[delete-trained-models]]
|
||||
= Delete trained model API
|
||||
[subs="attributes"]
|
||||
++++
|
||||
<titleabbrev>Delete trained model</titleabbrev>
|
||||
++++
|
||||
|
||||
Deletes an existing trained {infer} model that is currently not referenced by an
|
||||
Deletes an existing trained {infer} model that is currently not referenced by an
|
||||
ingest pipeline.
|
||||
|
||||
experimental[]
|
||||
|
||||
|
||||
[[ml-delete-inference-request]]
|
||||
[[ml-delete-trained-models-request]]
|
||||
== {api-request-title}
|
||||
|
||||
`DELETE _ml/inference/<model_id>`
|
||||
`DELETE _ml/trained_models/<model_id>`
|
||||
|
||||
|
||||
[[ml-delete-inference-prereq]]
|
||||
[[ml-delete-trained-models-prereq]]
|
||||
== {api-prereq-title}
|
||||
|
||||
If the {es} {security-features} are enabled, you must have the following built-in roles or equivalent privileges:
|
||||
|
@ -29,31 +29,31 @@ If the {es} {security-features} are enabled, you must have the following built-i
|
|||
For more information, see <<built-in-roles>> and {ml-docs-setup-privileges}.
|
||||
|
||||
|
||||
[[ml-delete-inference-path-params]]
|
||||
[[ml-delete-trained-models-path-params]]
|
||||
== {api-path-parms-title}
|
||||
|
||||
`<model_id>`::
|
||||
(Optional, string)
|
||||
(Optional, string)
|
||||
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-id]
|
||||
|
||||
|
||||
[[ml-delete-inference-response-codes]]
|
||||
[[ml-delete-trained-models-response-codes]]
|
||||
== {api-response-codes-title}
|
||||
|
||||
`409`::
|
||||
The code indicates that the trained model is referenced by an ingest pipeline
|
||||
The code indicates that the trained model is referenced by an ingest pipeline
|
||||
and cannot be deleted.
|
||||
|
||||
|
||||
[[ml-delete-inference-example]]
|
||||
[[ml-delete-trained-models-example]]
|
||||
== {api-examples-title}
|
||||
|
||||
The following example deletes the `regression-job-one-1574775307356` trained
|
||||
The following example deletes the `regression-job-one-1574775307356` trained
|
||||
model:
|
||||
|
||||
[source,console]
|
||||
--------------------------------------------------
|
||||
DELETE _ml/inference/regression-job-one-1574775307356
|
||||
DELETE _ml/trained_models/regression-job-one-1574775307356
|
||||
--------------------------------------------------
|
||||
// TEST[skip:TBD]
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[role="xpack"]
|
||||
[testenv="basic"]
|
||||
[[get-inference-stats]]
|
||||
[[get-trained-models-stats]]
|
||||
= Get trained model statistics API
|
||||
[subs="attributes"]
|
||||
++++
|
||||
|
@ -12,21 +12,21 @@ Retrieves usage information for trained models.
|
|||
experimental[]
|
||||
|
||||
|
||||
[[ml-get-inference-stats-request]]
|
||||
[[ml-get-trained-models-stats-request]]
|
||||
== {api-request-title}
|
||||
|
||||
`GET _ml/inference/_stats` +
|
||||
`GET _ml/trained_models/_stats` +
|
||||
|
||||
`GET _ml/inference/_all/_stats` +
|
||||
`GET _ml/trained_models/_all/_stats` +
|
||||
|
||||
`GET _ml/inference/<model_id>/_stats` +
|
||||
`GET _ml/trained_models/<model_id>/_stats` +
|
||||
|
||||
`GET _ml/inference/<model_id>,<model_id_2>/_stats` +
|
||||
`GET _ml/trained_models/<model_id>,<model_id_2>/_stats` +
|
||||
|
||||
`GET _ml/inference/<model_id_pattern*>,<model_id_2>/_stats`
|
||||
`GET _ml/trained_models/<model_id_pattern*>,<model_id_2>/_stats`
|
||||
|
||||
|
||||
[[ml-get-inference-stats-prereq]]
|
||||
[[ml-get-trained-models-stats-prereq]]
|
||||
== {api-prereq-title}
|
||||
|
||||
Required privileges which should be added to a custom role:
|
||||
|
@ -35,49 +35,49 @@ Required privileges which should be added to a custom role:
|
|||
|
||||
For more information, see <<security-privileges>> and {ml-docs-setup-privileges}.
|
||||
|
||||
[[ml-get-inference-stats-desc]]
|
||||
[[ml-get-trained-models-stats-desc]]
|
||||
== {api-description-title}
|
||||
|
||||
You can get usage information for multiple trained models in a single API
|
||||
You can get usage information for multiple trained models in a single API
|
||||
request by using a comma-separated list of model IDs or a wildcard expression.
|
||||
|
||||
|
||||
[[ml-get-inference-stats-path-params]]
|
||||
[[ml-get-trained-models-stats-path-params]]
|
||||
== {api-path-parms-title}
|
||||
|
||||
`<model_id>`::
|
||||
(Optional, string)
|
||||
(Optional, string)
|
||||
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-id]
|
||||
|
||||
|
||||
[[ml-get-inference-stats-query-params]]
|
||||
[[ml-get-trained-models-stats-query-params]]
|
||||
== {api-query-parms-title}
|
||||
|
||||
`allow_no_match`::
|
||||
(Optional, boolean)
|
||||
(Optional, boolean)
|
||||
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=allow-no-match-models]
|
||||
|
||||
`from`::
|
||||
(Optional, integer)
|
||||
(Optional, integer)
|
||||
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=from-models]
|
||||
|
||||
`size`::
|
||||
(Optional, integer)
|
||||
(Optional, integer)
|
||||
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=size-models]
|
||||
|
||||
[role="child_attributes"]
|
||||
[[ml-get-inference-stats-results]]
|
||||
[[ml-get-trained-models-stats-results]]
|
||||
== {api-response-body-title}
|
||||
|
||||
`count`::
|
||||
(integer)
|
||||
The total number of trained model statistics that matched the requested ID
|
||||
patterns. Could be higher than the number of items in the `trained_model_stats`
|
||||
The total number of trained model statistics that matched the requested ID
|
||||
patterns. Could be higher than the number of items in the `trained_model_stats`
|
||||
array as the size of the array is restricted by the supplied `size` parameter.
|
||||
|
||||
`trained_model_stats`::
|
||||
(array)
|
||||
An array of trained model statistics, which are sorted by the `model_id` value
|
||||
An array of trained model statistics, which are sorted by the `model_id` value
|
||||
in ascending order.
|
||||
+
|
||||
.Properties of trained model stats
|
||||
|
@ -111,10 +111,10 @@ This is across all inference contexts, including all pipelines.
|
|||
|
||||
`cache_miss_count`:::
|
||||
(integer)
|
||||
The number of times the model was loaded for inference and was not retrieved
|
||||
from the cache. If this number is close to the `inference_count`, then the cache
|
||||
is not being appropriately used. This can be solved by increasing the cache size
|
||||
or its time-to-live (TTL). See <<general-ml-settings>> for the appropriate
|
||||
The number of times the model was loaded for inference and was not retrieved
|
||||
from the cache. If this number is close to the `inference_count`, then the cache
|
||||
is not being appropriately used. This can be solved by increasing the cache size
|
||||
or its time-to-live (TTL). See <<general-ml-settings>> for the appropriate
|
||||
settings.
|
||||
|
||||
`failure_count`:::
|
||||
|
@ -134,21 +134,21 @@ section in <<cluster-nodes-stats>>.
|
|||
|
||||
====
|
||||
|
||||
[[ml-get-inference-stats-response-codes]]
|
||||
[[ml-get-trained-models-stats-response-codes]]
|
||||
== {api-response-codes-title}
|
||||
|
||||
`404` (Missing resources)::
|
||||
If `allow_no_match` is `false`, this code indicates that there are no
|
||||
resources that match the request or only partial matches for the request.
|
||||
|
||||
[[ml-get-inference-stats-example]]
|
||||
[[ml-get-trained-models-stats-example]]
|
||||
== {api-examples-title}
|
||||
|
||||
The following example gets usage information for all the trained models:
|
||||
|
||||
[source,console]
|
||||
--------------------------------------------------
|
||||
GET _ml/inference/_stats
|
||||
GET _ml/trained_models/_stats
|
||||
--------------------------------------------------
|
||||
// TEST[skip:TBD]
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
[role="xpack"]
|
||||
[testenv="basic"]
|
||||
[[get-inference]]
|
||||
[[get-trained-models]]
|
||||
= Get trained model API
|
||||
[subs="attributes"]
|
||||
++++
|
||||
|
@ -12,21 +12,21 @@ Retrieves configuration information for a trained model.
|
|||
experimental[]
|
||||
|
||||
|
||||
[[ml-get-inference-request]]
|
||||
[[ml-get-trained-models-request]]
|
||||
== {api-request-title}
|
||||
|
||||
`GET _ml/inference/` +
|
||||
`GET _ml/trained_models/` +
|
||||
|
||||
`GET _ml/inference/<model_id>` +
|
||||
`GET _ml/trained_models/<model_id>` +
|
||||
|
||||
`GET _ml/inference/_all` +
|
||||
`GET _ml/trained_models/_all` +
|
||||
|
||||
`GET _ml/inference/<model_id1>,<model_id2>` +
|
||||
`GET _ml/trained_models/<model_id1>,<model_id2>` +
|
||||
|
||||
`GET _ml/inference/<model_id_pattern*>`
|
||||
`GET _ml/trained_models/<model_id_pattern*>`
|
||||
|
||||
|
||||
[[ml-get-inference-prereq]]
|
||||
[[ml-get-trained-models-prereq]]
|
||||
== {api-prereq-title}
|
||||
|
||||
If the {es} {security-features} are enabled, you must have the following
|
||||
|
@ -38,14 +38,14 @@ For more information, see <<security-privileges>> and
|
|||
{ml-docs-setup-privileges}.
|
||||
|
||||
|
||||
[[ml-get-inference-desc]]
|
||||
[[ml-get-trained-models-desc]]
|
||||
== {api-description-title}
|
||||
|
||||
You can get information for multiple trained models in a single API request by
|
||||
using a comma-separated list of model IDs or a wildcard expression.
|
||||
|
||||
|
||||
[[ml-get-inference-path-params]]
|
||||
[[ml-get-trained-models-path-params]]
|
||||
== {api-path-parms-title}
|
||||
|
||||
`<model_id>`::
|
||||
|
@ -53,7 +53,7 @@ using a comma-separated list of model IDs or a wildcard expression.
|
|||
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-id]
|
||||
|
||||
|
||||
[[ml-get-inference-query-params]]
|
||||
[[ml-get-trained-models-query-params]]
|
||||
== {api-query-parms-title}
|
||||
|
||||
`allow_no_match`::
|
||||
|
@ -94,7 +94,7 @@ include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=size-models]
|
|||
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=tags]
|
||||
|
||||
[role="child_attributes"]
|
||||
[[ml-get-inference-results]]
|
||||
[[ml-get-trained-models-results]]
|
||||
== {api-response-body-title}
|
||||
|
||||
`trained_model_configs`::
|
||||
|
@ -232,7 +232,8 @@ A comma delimited string of tags. A trained model can have many tags, or none.
|
|||
The {es} version number in which the trained model was created.
|
||||
====
|
||||
|
||||
[[ml-get-inference-response-codes]]
|
||||
[[ml-get-trained-models-response-codes]]
|
||||
|
||||
== {api-response-codes-title}
|
||||
|
||||
`400`::
|
||||
|
@ -244,13 +245,13 @@ The {es} version number in which the trained model was created.
|
|||
resources that match the request or only partial matches for the request.
|
||||
|
||||
|
||||
[[ml-get-inference-example]]
|
||||
[[ml-get-trained-models-example]]
|
||||
== {api-examples-title}
|
||||
|
||||
The following example gets configuration information for all the trained models:
|
||||
|
||||
[source,console]
|
||||
--------------------------------------------------
|
||||
GET _ml/inference/
|
||||
GET _ml/trained_models/
|
||||
--------------------------------------------------
|
||||
// TEST[skip:TBD]
|
|
@ -1,12 +1,12 @@
|
|||
include::ml-df-analytics-apis.asciidoc[leveloffset=+1]
|
||||
//CREATE
|
||||
include::put-dfanalytics.asciidoc[leveloffset=+2]
|
||||
include::put-inference.asciidoc[leveloffset=+2]
|
||||
include::put-trained-models.asciidoc[leveloffset=+2]
|
||||
//UPDATE
|
||||
include::update-dfanalytics.asciidoc[leveloffset=+2]
|
||||
//DELETE
|
||||
include::delete-dfanalytics.asciidoc[leveloffset=+2]
|
||||
include::delete-inference-trained-model.asciidoc[leveloffset=+2]
|
||||
include::delete-trained-models.asciidoc[leveloffset=+2]
|
||||
//EVALUATE
|
||||
include::evaluate-dfanalytics.asciidoc[leveloffset=+2]
|
||||
//ESTIMATE_MEMORY_USAGE
|
||||
|
@ -14,8 +14,8 @@ include::explain-dfanalytics.asciidoc[leveloffset=+2]
|
|||
//GET
|
||||
include::get-dfanalytics.asciidoc[leveloffset=+2]
|
||||
include::get-dfanalytics-stats.asciidoc[leveloffset=+2]
|
||||
include::get-inference-trained-model.asciidoc[leveloffset=+2]
|
||||
include::get-inference-trained-model-stats.asciidoc[leveloffset=+2]
|
||||
include::get-trained-models.asciidoc[leveloffset=+2]
|
||||
include::get-trained-models-stats.asciidoc[leveloffset=+2]
|
||||
//SET/START/STOP
|
||||
include::start-dfanalytics.asciidoc[leveloffset=+2]
|
||||
include::stop-dfanalytics.asciidoc[leveloffset=+2]
|
||||
|
|
|
@ -18,10 +18,10 @@ You can use the following APIs to perform {ml} {dfanalytics} activities.
|
|||
|
||||
You can use the following APIs to perform {infer} operations.
|
||||
|
||||
* <<put-inference>>
|
||||
* <<get-inference>>
|
||||
* <<get-inference-stats>>
|
||||
* <<delete-inference>>
|
||||
* <<put-trained-models>>
|
||||
* <<get-trained-models>>
|
||||
* <<get-trained-models-stats>>
|
||||
* <<delete-trained-models>>
|
||||
|
||||
|
||||
See also <<ml-apis>>.
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
[role="xpack"]
|
||||
[testenv="basic"]
|
||||
[[put-inference]]
|
||||
[[put-trained-models]]
|
||||
= Create trained model API
|
||||
[subs="attributes"]
|
||||
++++
|
||||
<titleabbrev>Create trained model</titleabbrev>
|
||||
++++
|
||||
|
||||
Creates an trained model.
|
||||
Creates a trained model.
|
||||
|
||||
WARNING: Models created in version 7.8.0 are not backwards compatible
|
||||
with older node versions. If in a mixed cluster environment,
|
||||
|
@ -18,13 +18,13 @@ WARNING: Models created in version 7.8.0 are not backwards compatible
|
|||
experimental[]
|
||||
|
||||
|
||||
[[ml-put-inference-request]]
|
||||
[[ml-put-trained-models-request]]
|
||||
== {api-request-title}
|
||||
|
||||
`PUT _ml/inference/<model_id>`
|
||||
`PUT _ml/trained_models/<model_id>`
|
||||
|
||||
|
||||
[[ml-put-inference-prereq]]
|
||||
[[ml-put-trained-models-prereq]]
|
||||
== {api-prereq-title}
|
||||
|
||||
If the {es} {security-features} are enabled, you must have the following
|
||||
|
@ -35,14 +35,14 @@ built-in roles or equivalent privileges:
|
|||
For more information, see <<built-in-roles>> and {ml-docs-setup-privileges}.
|
||||
|
||||
|
||||
[[ml-put-inference-desc]]
|
||||
[[ml-put-trained-models-desc]]
|
||||
== {api-description-title}
|
||||
|
||||
The create trained model API enables you to supply a trained model that is not
|
||||
The create trained model API enables you to supply a trained model that is not
|
||||
created by {dfanalytics}.
|
||||
|
||||
|
||||
[[ml-put-inference-path-params]]
|
||||
[[ml-put-trained-models-path-params]]
|
||||
== {api-path-parms-title}
|
||||
|
||||
`<model_id>`::
|
||||
|
@ -50,7 +50,7 @@ created by {dfanalytics}.
|
|||
include::{es-repo-dir}/ml/ml-shared.asciidoc[tag=model-id]
|
||||
|
||||
[role="child_attributes"]
|
||||
[[ml-put-inference-request-body]]
|
||||
[[ml-put-trained-models-request-body]]
|
||||
== {api-request-body-title}
|
||||
|
||||
`compressed_definition`::
|
||||
|
@ -61,7 +61,7 @@ If `compressed_definition` is specified, then `definition` cannot be specified.
|
|||
//Begin definition
|
||||
`definition`::
|
||||
(Required, object)
|
||||
The {infer} definition for the model. If `definition` is specified, then
|
||||
The {infer} definition for the model. If `definition` is specified, then
|
||||
`compressed_definition` cannot be specified.
|
||||
+
|
||||
.Properties of `definition`
|
||||
|
@ -70,7 +70,7 @@ The {infer} definition for the model. If `definition` is specified, then
|
|||
//Begin preprocessors
|
||||
`preprocessors`::
|
||||
(Optional, object)
|
||||
Collection of preprocessors. See <<ml-put-inference-preprocessor-example>>.
|
||||
Collection of preprocessors. See <<ml-put-trained-models-preprocessor-example>>.
|
||||
+
|
||||
.Properties of `preprocessors`
|
||||
[%collapsible%open]
|
||||
|
@ -172,7 +172,7 @@ The definition for a binary decision tree.
|
|||
[%collapsible%open]
|
||||
======
|
||||
`classification_labels`:::
|
||||
(Optional, string) An array of classification labels (used for
|
||||
(Optional, string) An array of classification labels (used for
|
||||
`classification`).
|
||||
|
||||
`feature_names`:::
|
||||
|
@ -249,7 +249,7 @@ The decision threshold with which to compare the feature value.
|
|||
//Begin ensemble
|
||||
`ensemble`::
|
||||
(Optional, object)
|
||||
The definition for an ensemble model. See <<ml-put-inference-model-example>>.
|
||||
The definition for an ensemble model. See <<ml-put-trained-models-model-example>>.
|
||||
+
|
||||
.Properties of `ensemble`
|
||||
[%collapsible%open]
|
||||
|
@ -259,7 +259,7 @@ The definition for an ensemble model. See <<ml-put-inference-model-example>>.
|
|||
(Required, object)
|
||||
An aggregated output object that defines how to aggregate the outputs of the
|
||||
`trained_models`. Supported objects are `weighted_mode`, `weighted_sum`, and
|
||||
`logistic_regression`. See <<ml-put-inference-aggregated-output-example>>.
|
||||
`logistic_regression`. See <<ml-put-trained-models-aggregated-output-example>>.
|
||||
+
|
||||
.Properties of `aggregate_output`
|
||||
[%collapsible%open]
|
||||
|
@ -448,10 +448,10 @@ An object map that contains metadata about the model.
|
|||
An array of tags to organize the model.
|
||||
|
||||
|
||||
[[ml-put-inference-example]]
|
||||
[[ml-put-trained-models-example]]
|
||||
== {api-examples-title}
|
||||
|
||||
[[ml-put-inference-preprocessor-example]]
|
||||
[[ml-put-trained-models-preprocessor-example]]
|
||||
=== Preprocessor examples
|
||||
|
||||
The example below shows a `frequency_encoding` preprocessor object:
|
||||
|
@ -518,7 +518,7 @@ This example shows a `target_mean_encoding` preprocessor object:
|
|||
//NOTCONSOLE
|
||||
|
||||
|
||||
[[ml-put-inference-model-example]]
|
||||
[[ml-put-trained-models-model-example]]
|
||||
=== Model examples
|
||||
|
||||
The first example shows a `trained_model` object:
|
||||
|
@ -602,7 +602,7 @@ The following example shows an `ensemble` model object:
|
|||
//NOTCONSOLE
|
||||
|
||||
|
||||
[[ml-put-inference-aggregated-output-example]]
|
||||
[[ml-put-trained-models-aggregated-output-example]]
|
||||
=== Aggregated output example
|
||||
|
||||
Example of a `logistic_regression` object:
|
||||
|
@ -657,7 +657,7 @@ Example of an `exponent` object:
|
|||
//NOTCONSOLE
|
||||
|
||||
|
||||
[[ml-put-inference-json-schema]]
|
||||
[[ml-put-trained-models-json-schema]]
|
||||
=== {infer-cap} JSON schema
|
||||
|
||||
For the full JSON schema of model {infer},
|
|
@ -539,6 +539,26 @@ See <<put-dfanalytics>>.
|
|||
This page was deleted.
|
||||
See <<put-dfanalytics>>.
|
||||
|
||||
[role="exclude",id="put-inference"]
|
||||
=== Create trained model API
|
||||
|
||||
See <<put-trained-models>>.
|
||||
|
||||
[role="exclude",id="get-inference-stats"]
|
||||
=== Get trained model statistics API
|
||||
|
||||
See <<get-trained-models-stats>>.
|
||||
|
||||
[role="exclude",id="get-inference"]
|
||||
=== Get trained model API
|
||||
|
||||
See <<get-trained-models>>.
|
||||
|
||||
[role="exclude",id="delete-inference"]
|
||||
=== Delete trained model API
|
||||
|
||||
See <<delete-trained-models>>.
|
||||
|
||||
[role="exclude",id="data-frames-settings"]
|
||||
=== {transforms-cap} settings in Elasticsearch
|
||||
|
||||
|
|
|
@ -118,11 +118,11 @@ public class InferenceIngestIT extends ESRestTestCase {
|
|||
assertBusy(() -> {
|
||||
try {
|
||||
Response statsResponse = client().performRequest(new Request("GET",
|
||||
"_ml/inference/" + classificationModelId + "/_stats"));
|
||||
"_ml/trained_models/" + classificationModelId + "/_stats"));
|
||||
String response = EntityUtils.toString(statsResponse.getEntity());
|
||||
assertThat(response, containsString("\"inference_count\":10"));
|
||||
assertThat(response, containsString("\"cache_miss_count\":30"));
|
||||
statsResponse = client().performRequest(new Request("GET", "_ml/inference/" + regressionModelId + "/_stats"));
|
||||
statsResponse = client().performRequest(new Request("GET", "_ml/trained_models/" + regressionModelId + "/_stats"));
|
||||
response = EntityUtils.toString(statsResponse.getEntity());
|
||||
assertThat(response, containsString("\"inference_count\":10"));
|
||||
assertThat(response, containsString("\"cache_miss_count\":30"));
|
||||
|
@ -174,16 +174,16 @@ public class InferenceIngestIT extends ESRestTestCase {
|
|||
assertBusy(() -> {
|
||||
try {
|
||||
Response statsResponse = client().performRequest(new Request("GET",
|
||||
"_ml/inference/" + classificationModelId + "/_stats"));
|
||||
"_ml/trained_models/" + classificationModelId + "/_stats"));
|
||||
String response = EntityUtils.toString(statsResponse.getEntity());
|
||||
assertThat(response, containsString("\"inference_count\":10"));
|
||||
assertThat(response, containsString("\"cache_miss_count\":3"));
|
||||
statsResponse = client().performRequest(new Request("GET", "_ml/inference/" + regressionModelId + "/_stats"));
|
||||
statsResponse = client().performRequest(new Request("GET", "_ml/trained_models/" + regressionModelId + "/_stats"));
|
||||
response = EntityUtils.toString(statsResponse.getEntity());
|
||||
assertThat(response, containsString("\"inference_count\":15"));
|
||||
assertThat(response, containsString("\"cache_miss_count\":3"));
|
||||
// can get both
|
||||
statsResponse = client().performRequest(new Request("GET", "_ml/inference/_stats"));
|
||||
statsResponse = client().performRequest(new Request("GET", "_ml/trained_models/_stats"));
|
||||
String entityString = EntityUtils.toString(statsResponse.getEntity());
|
||||
assertThat(entityString, containsString("\"inference_count\":15"));
|
||||
assertThat(entityString, containsString("\"inference_count\":10"));
|
||||
|
@ -604,7 +604,7 @@ public class InferenceIngestIT extends ESRestTestCase {
|
|||
}
|
||||
|
||||
private void putModel(String modelId, String modelConfiguration) throws IOException {
|
||||
Request request = new Request("PUT", "_ml/inference/" + modelId);
|
||||
Request request = new Request("PUT", "_ml/trained_models/" + modelId);
|
||||
request.setJsonEntity(modelConfiguration);
|
||||
client().performRequest(request);
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
putRegressionModel(modelId);
|
||||
putRegressionModel(modelId2);
|
||||
Response getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/" + modelId));
|
||||
MachineLearning.BASE_PATH + "trained_models/" + modelId));
|
||||
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
String response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -78,7 +78,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
assertThat(response, containsString("\"count\":1"));
|
||||
|
||||
getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/a_test_regression*"));
|
||||
MachineLearning.BASE_PATH + "trained_models/a_test_regression*"));
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
|
||||
response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -88,7 +88,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
assertThat(response, containsString("\"count\":2"));
|
||||
|
||||
getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/a_test_regression_model?human=true&include=definition"));
|
||||
MachineLearning.BASE_PATH + "trained_models/a_test_regression_model?human=true&include=definition"));
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
|
||||
response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -100,7 +100,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
assertThat(response, containsString("\"count\":1"));
|
||||
|
||||
getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/a_test_regression_model?decompress_definition=false&include=definition"));
|
||||
MachineLearning.BASE_PATH + "trained_models/a_test_regression_model?decompress_definition=false&include=definition"));
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
|
||||
response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -112,12 +112,12 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
|
||||
ResponseException responseException = expectThrows(ResponseException.class, () ->
|
||||
client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/a_test_regression*?human=true&include=definition")));
|
||||
MachineLearning.BASE_PATH + "trained_models/a_test_regression*?human=true&include=definition")));
|
||||
assertThat(EntityUtils.toString(responseException.getResponse().getEntity()),
|
||||
containsString(Messages.INFERENCE_TOO_MANY_DEFINITIONS_REQUESTED));
|
||||
|
||||
getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/a_test_regression_model,a_test_regression_model-2"));
|
||||
MachineLearning.BASE_PATH + "trained_models/a_test_regression_model,a_test_regression_model-2"));
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
|
||||
response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -126,17 +126,17 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
assertThat(response, containsString("\"count\":2"));
|
||||
|
||||
getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/classification*?allow_no_match=true"));
|
||||
MachineLearning.BASE_PATH + "trained_models/classification*?allow_no_match=true"));
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
|
||||
response = EntityUtils.toString(getModel.getEntity());
|
||||
assertThat(response, containsString("\"count\":0"));
|
||||
|
||||
ResponseException ex = expectThrows(ResponseException.class, () -> client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/classification*?allow_no_match=false")));
|
||||
MachineLearning.BASE_PATH + "trained_models/classification*?allow_no_match=false")));
|
||||
assertThat(ex.getResponse().getStatusLine().getStatusCode(), equalTo(404));
|
||||
|
||||
getModel = client().performRequest(new Request("GET", MachineLearning.BASE_PATH + "inference?from=0&size=1"));
|
||||
getModel = client().performRequest(new Request("GET", MachineLearning.BASE_PATH + "trained_models?from=0&size=1"));
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
|
||||
response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -144,7 +144,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
assertThat(response, containsString("\"model_id\":\"a_test_regression_model\""));
|
||||
assertThat(response, not(containsString("\"model_id\":\"a_test_regression_model-2\"")));
|
||||
|
||||
getModel = client().performRequest(new Request("GET", MachineLearning.BASE_PATH + "inference?from=1&size=1"));
|
||||
getModel = client().performRequest(new Request("GET", MachineLearning.BASE_PATH + "trained_models?from=1&size=1"));
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
|
||||
response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -158,12 +158,12 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
putRegressionModel(modelId);
|
||||
|
||||
Response delModel = client().performRequest(new Request("DELETE",
|
||||
MachineLearning.BASE_PATH + "inference/" + modelId));
|
||||
MachineLearning.BASE_PATH + "trained_models/" + modelId));
|
||||
String response = EntityUtils.toString(delModel.getEntity());
|
||||
assertThat(response, containsString("\"acknowledged\":true"));
|
||||
|
||||
ResponseException responseException = expectThrows(ResponseException.class,
|
||||
() -> client().performRequest(new Request("DELETE", MachineLearning.BASE_PATH + "inference/" + modelId)));
|
||||
() -> client().performRequest(new Request("DELETE", MachineLearning.BASE_PATH + "trained_models/" + modelId)));
|
||||
assertThat(responseException.getResponse().getStatusLine().getStatusCode(), equalTo(404));
|
||||
|
||||
responseException = expectThrows(ResponseException.class,
|
||||
|
@ -181,7 +181,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
|
||||
public void testGetPrePackagedModels() throws IOException {
|
||||
Response getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/lang_ident_model_1?human=true&include=definition"));
|
||||
MachineLearning.BASE_PATH + "trained_models/lang_ident_model_1?human=true&include=definition"));
|
||||
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
String response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -194,7 +194,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
String modelId = "regression_model_to_export";
|
||||
putRegressionModel(modelId);
|
||||
Response getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH + "inference/" + modelId));
|
||||
MachineLearning.BASE_PATH + "trained_models/" + modelId));
|
||||
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
String response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -203,7 +203,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
|
||||
getModel = client().performRequest(new Request("GET",
|
||||
MachineLearning.BASE_PATH +
|
||||
"inference/" + modelId +
|
||||
"trained_models/" + modelId +
|
||||
"?include=definition&decompress_definition=false&for_export=true"));
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
|
||||
|
@ -213,11 +213,11 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
String importedModelId = "regression_model_to_import";
|
||||
try (XContentBuilder builder = XContentFactory.jsonBuilder()) {
|
||||
builder.map(modelDefinition);
|
||||
Request model = new Request("PUT", "_ml/inference/" + importedModelId);
|
||||
Request model = new Request("PUT", "_ml/trained_models/" + importedModelId);
|
||||
model.setJsonEntity(XContentHelper.convertToJson(BytesReference.bytes(builder), false, XContentType.JSON));
|
||||
assertThat(client().performRequest(model).getStatusLine().getStatusCode(), equalTo(200));
|
||||
}
|
||||
getModel = client().performRequest(new Request("GET", MachineLearning.BASE_PATH + "inference/regression*"));
|
||||
getModel = client().performRequest(new Request("GET", MachineLearning.BASE_PATH + "trained_models/regression*"));
|
||||
|
||||
assertThat(getModel.getStatusLine().getStatusCode(), equalTo(200));
|
||||
response = EntityUtils.toString(getModel.getEntity());
|
||||
|
@ -237,7 +237,7 @@ public class TrainedModelIT extends ESRestTestCase {
|
|||
.setModelId(modelId)
|
||||
.setInput(new TrainedModelInput(Arrays.asList("col1", "col2", "col3")))
|
||||
.build().toXContent(builder, ToXContent.EMPTY_PARAMS);
|
||||
Request model = new Request("PUT", "_ml/inference/" + modelId);
|
||||
Request model = new Request("PUT", "_ml/trained_models/" + modelId);
|
||||
model.setJsonEntity(XContentHelper.convertToJson(BytesReference.bytes(builder), false, XContentType.JSON));
|
||||
assertThat(client().performRequest(model).getStatusLine().getStatusCode(), equalTo(200));
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ public class InferenceProcessorIT extends ESRestTestCase {
|
|||
|
||||
private void putRegressionModel() throws IOException {
|
||||
|
||||
Request model = new Request("PUT", "_ml/inference/" + MODEL_ID);
|
||||
Request model = new Request("PUT", "_ml/trained_models/" + MODEL_ID);
|
||||
model.setJsonEntity(
|
||||
" {\n" +
|
||||
" \"description\": \"empty model for tests\",\n" +
|
||||
|
|
|
@ -14,6 +14,7 @@ import org.elasticsearch.xpack.core.ml.inference.TrainedModelConfig;
|
|||
import org.elasticsearch.xpack.ml.MachineLearning;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.Collections.singletonList;
|
||||
|
@ -23,8 +24,15 @@ public class RestDeleteTrainedModelAction extends BaseRestHandler {
|
|||
|
||||
@Override
|
||||
public List<Route> routes() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReplacedRoute> replacedRoutes() {
|
||||
return singletonList(
|
||||
new Route(DELETE, MachineLearning.BASE_PATH + "inference/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}"));
|
||||
new ReplacedRoute(
|
||||
DELETE, MachineLearning.BASE_PATH + "trained_models/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}",
|
||||
DELETE, MachineLearning.BASE_PATH + "inference/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -42,9 +42,18 @@ public class RestGetTrainedModelsAction extends BaseRestHandler {
|
|||
|
||||
@Override
|
||||
public List<Route> routes() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReplacedRoute> replacedRoutes() {
|
||||
return unmodifiableList(asList(
|
||||
new Route(GET, MachineLearning.BASE_PATH + "inference/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}"),
|
||||
new Route(GET, MachineLearning.BASE_PATH + "inference")));
|
||||
new ReplacedRoute(
|
||||
GET, MachineLearning.BASE_PATH + "trained_models/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}",
|
||||
GET, MachineLearning.BASE_PATH + "inference/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}"),
|
||||
new ReplacedRoute(
|
||||
GET, MachineLearning.BASE_PATH + "trained_models",
|
||||
GET, MachineLearning.BASE_PATH + "inference")));
|
||||
}
|
||||
|
||||
private static final Map<String, String> DEFAULT_TO_XCONTENT_VALUES =
|
||||
|
|
|
@ -17,6 +17,7 @@ import org.elasticsearch.xpack.core.ml.inference.TrainedModelConfig;
|
|||
import org.elasticsearch.xpack.ml.MachineLearning;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.Arrays.asList;
|
||||
|
@ -28,9 +29,18 @@ public class RestGetTrainedModelsStatsAction extends BaseRestHandler {
|
|||
|
||||
@Override
|
||||
public List<Route> routes() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReplacedRoute> replacedRoutes() {
|
||||
return unmodifiableList(asList(
|
||||
new Route(GET, MachineLearning.BASE_PATH + "inference/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}/_stats"),
|
||||
new Route(GET, MachineLearning.BASE_PATH + "inference/_stats")));
|
||||
new ReplacedRoute(
|
||||
GET, MachineLearning.BASE_PATH + "trained_models/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}/_stats",
|
||||
GET, MachineLearning.BASE_PATH + "inference/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}/_stats"),
|
||||
new ReplacedRoute(
|
||||
GET, MachineLearning.BASE_PATH + "trained_models/_stats",
|
||||
GET, MachineLearning.BASE_PATH + "inference/_stats")));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.elasticsearch.xpack.core.ml.inference.TrainedModelConfig;
|
|||
import org.elasticsearch.xpack.ml.MachineLearning;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static java.util.Collections.singletonList;
|
||||
|
@ -24,8 +25,15 @@ public class RestPutTrainedModelAction extends BaseRestHandler {
|
|||
|
||||
@Override
|
||||
public List<Route> routes() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ReplacedRoute> replacedRoutes() {
|
||||
return singletonList(
|
||||
new Route(PUT, MachineLearning.BASE_PATH + "inference/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}"));
|
||||
new ReplacedRoute(
|
||||
PUT, MachineLearning.BASE_PATH + "trained_models/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}",
|
||||
PUT, MachineLearning.BASE_PATH + "inference/{" + TrainedModelConfig.MODEL_ID.getPreferredName() + "}"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"ml.delete_trained_model":{
|
||||
"documentation":{
|
||||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-inference.html",
|
||||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/delete-trained-models.html",
|
||||
"description":"Deletes an existing trained inference model that is currently not referenced by an ingest pipeline."
|
||||
},
|
||||
"stability":"experimental",
|
||||
"url":{
|
||||
"paths":[
|
||||
{
|
||||
"path":"/_ml/inference/{model_id}",
|
||||
"path":"/_ml/trained_models/{model_id}",
|
||||
"methods":[
|
||||
"DELETE"
|
||||
],
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"ml.get_trained_models":{
|
||||
"documentation":{
|
||||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/get-inference.html",
|
||||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models.html",
|
||||
"description":"Retrieves configuration information for a trained inference model."
|
||||
},
|
||||
"stability":"experimental",
|
||||
"url":{
|
||||
"paths":[
|
||||
{
|
||||
"path":"/_ml/inference/{model_id}",
|
||||
"path":"/_ml/trained_models/{model_id}",
|
||||
"methods":[
|
||||
"GET"
|
||||
],
|
||||
|
@ -20,7 +20,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"path":"/_ml/inference",
|
||||
"path":"/_ml/trained_models",
|
||||
"methods":[
|
||||
"GET"
|
||||
]
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"ml.get_trained_models_stats":{
|
||||
"documentation":{
|
||||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/get-inference-stats.html",
|
||||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/get-trained-models-stats.html",
|
||||
"description":"Retrieves usage information for trained inference models."
|
||||
},
|
||||
"stability":"experimental",
|
||||
"url":{
|
||||
"paths":[
|
||||
{
|
||||
"path":"/_ml/inference/{model_id}/_stats",
|
||||
"path":"/_ml/trained_models/{model_id}/_stats",
|
||||
"methods":[
|
||||
"GET"
|
||||
],
|
||||
|
@ -20,7 +20,7 @@
|
|||
}
|
||||
},
|
||||
{
|
||||
"path":"/_ml/inference/_stats",
|
||||
"path":"/_ml/trained_models/_stats",
|
||||
"methods":[
|
||||
"GET"
|
||||
]
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"ml.put_trained_model":{
|
||||
"documentation":{
|
||||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/put-inference.html",
|
||||
"url":"https://www.elastic.co/guide/en/elasticsearch/reference/current/put-trained-models.html",
|
||||
"description":"Creates an inference trained model."
|
||||
},
|
||||
"stability":"experimental",
|
||||
"url":{
|
||||
"paths":[
|
||||
{
|
||||
"path":"/_ml/inference/{model_id}",
|
||||
"path":"/_ml/trained_models/{model_id}",
|
||||
"methods":[
|
||||
"PUT"
|
||||
],
|
||||
|
|
Loading…
Reference in New Issue