specification/ml/update_datafeed/MlUpdateDatafeedRequest.ts (42 lines of code) (raw):

/* * Licensed to Elasticsearch B.V. under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch B.V. licenses this file to you under * the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import { ChunkingConfig, DelayedDataCheckConfig } from '@ml/_types/Datafeed' import { Dictionary } from '@spec_utils/Dictionary' import { AggregationContainer } from '@_types/aggregations/AggregationContainer' import { RequestBase } from '@_types/Base' import { ExpandWildcards, Id, IndicesOptions } from '@_types/common' import { RuntimeFields } from '@_types/mapping/RuntimeFields' import { integer } from '@_types/Numeric' import { QueryContainer } from '@_types/query_dsl/abstractions' import { ScriptField } from '@_types/Scripting' import { Duration } from '@_types/Time' /** * Update a datafeed. * You must stop and start the datafeed for the changes to be applied. * When Elasticsearch security features are enabled, your datafeed remembers which roles the user who updated it had at * the time of the update and runs the query using those same roles. If you provide secondary authorization headers, * those credentials are used instead. * @rest_spec_name ml.update_datafeed * @availability stack since=6.4.0 stability=stable * @availability serverless stability=stable visibility=public * @cluster_privileges manage_ml * @doc_tag ml anomaly * @doc_id ml-update-datafeed */ export interface Request extends RequestBase { urls: [ { path: '/_ml/datafeeds/{datafeed_id}/_update' methods: ['POST'] } ] path_parts: { /** * A numerical character string that uniquely identifies the datafeed. * This identifier can contain lowercase alphanumeric characters (a-z and 0-9), hyphens, and underscores. * It must start and end with alphanumeric characters. */ datafeed_id: Id } query_parameters: { /** * If `true`, wildcard indices expressions that resolve into no concrete indices are ignored. This includes the * `_all` string or when no indices are specified. * @server_default true */ allow_no_indices?: boolean /** * Type of index that wildcard patterns can match. If the request can target data streams, this argument determines * whether wildcard expressions match hidden data streams. Supports comma-separated values. Valid values are: * * * `all`: Match any data stream or index, including hidden ones. * * `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed. * * `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or both. * * `none`: Wildcard patterns are not accepted. * * `open`: Match open, non-hidden indices. Also matches any non-hidden data stream. * @server_default open */ expand_wildcards?: ExpandWildcards /** * If `true`, concrete, expanded or aliased indices are ignored when frozen. * @server_default true * @deprecated 7.16.0 */ ignore_throttled?: boolean /** * If `true`, unavailable indices (missing or closed) are ignored. * @server_default false */ ignore_unavailable?: boolean } body: { /** * If set, the datafeed performs aggregation searches. Support for aggregations is limited and should be used only * with low cardinality data. */ aggregations?: Dictionary<string, AggregationContainer> /** * Datafeeds might search over long time periods, for several months or years. This search is split into time * chunks in order to ensure the load on Elasticsearch is managed. Chunking configuration controls how the size of * these time chunks are calculated; it is an advanced configuration option. */ chunking_config?: ChunkingConfig /** * Specifies whether the datafeed checks for missing data and the size of the window. The datafeed can optionally * search over indices that have already been read in an effort to determine whether any data has subsequently been * added to the index. If missing data is found, it is a good indication that the `query_delay` is set too low and * the data is being indexed after the datafeed has passed that moment in time. This check runs only on real-time * datafeeds. */ delayed_data_check_config?: DelayedDataCheckConfig /** * The interval at which scheduled queries are made while the datafeed runs in real time. The default value is * either the bucket span for short bucket spans, or, for longer bucket spans, a sensible fraction of the bucket * span. When `frequency` is shorter than the bucket span, interim results for the last (partial) bucket are * written then eventually overwritten by the full bucket results. If the datafeed uses aggregations, this value * must be divisible by the interval of the date histogram aggregation. */ frequency?: Duration /** * An array of index names. Wildcards are supported. If any of the indices are in remote clusters, the machine * learning nodes must have the `remote_cluster_client` role. * @aliases indexes * */ indices?: string[] /** * Specifies index expansion options that are used during search. */ indices_options?: IndicesOptions job_id?: Id /** * If a real-time datafeed has never seen any data (including during any initial training period), it automatically * stops and closes the associated job after this many real-time searches return no documents. In other words, * it stops after `frequency` times `max_empty_searches` of real-time operation. If not set, a datafeed with no * end time that sees no data remains started until it is explicitly stopped. By default, it is not set. */ max_empty_searches?: integer /** * The Elasticsearch query domain-specific language (DSL). This value corresponds to the query object in an * Elasticsearch search POST body. All the options that are supported by Elasticsearch can be used, as this * object is passed verbatim to Elasticsearch. Note that if you change the query, the analyzed data is also * changed. Therefore, the time required to learn might be long and the understandability of the results is * unpredictable. If you want to make significant changes to the source data, it is recommended that you * clone the job and datafeed and make the amendments in the clone. Let both run in parallel and close one * when you are satisfied with the results of the job. * @server_default {"match_all": {"boost": 1}} */ query?: QueryContainer /** * The number of seconds behind real time that data is queried. For example, if data from 10:04 a.m. might * not be searchable in Elasticsearch until 10:06 a.m., set this property to 120 seconds. The default * value is randomly selected between `60s` and `120s`. This randomness improves the query performance * when there are multiple jobs running on the same node. */ query_delay?: Duration /** * Specifies runtime fields for the datafeed search. */ runtime_mappings?: RuntimeFields /** * Specifies scripts that evaluate custom expressions and returns script fields to the datafeed. * The detector configuration objects in a job can contain functions that use these script fields. */ script_fields?: Dictionary<string, ScriptField> /** * The size parameter that is used in Elasticsearch searches when the datafeed does not use aggregations. * The maximum value is the value of `index.max_result_window`. * @server_default 1000 */ scroll_size?: integer } }