{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/elastic/json-schema/elastic-indices-types-index-template-schema.json",
  "title": "indices._types.IndexTemplate",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/elastic-indices-api-openapi.yml#/components/schemas/indices._types.IndexTemplate",
  "type": "object",
  "properties": {
    "index_patterns": {
      "description": "Array of wildcard (`*`) expressions used to match the names of data streams and indices during creation.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.Names"
        }
      ]
    },
    "composed_of": {
      "description": "An ordered list of component template names.\nComponent templates are merged in the order specified, meaning that the last component template specified has the highest precedence.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/_types.Name"
      }
    },
    "template": {
      "description": "Template to be applied.\nIt may optionally include an `aliases`, `mappings`, or `settings` configuration.",
      "allOf": [
        {
          "$ref": "#/$defs/indices._types.IndexTemplateSummary"
        }
      ]
    },
    "version": {
      "description": "Version number used to manage index templates externally.\nThis number is not automatically generated by Elasticsearch.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.VersionNumber"
        }
      ]
    },
    "priority": {
      "description": "Priority to determine index template precedence when a new data stream or index is created.\nThe index template with the highest priority is chosen.\nIf no priority is specified the template is treated as though it is of priority 0 (lowest priority).\nThis number is not automatically generated by Elasticsearch.",
      "type": "number"
    },
    "_meta": {
      "description": "Optional user metadata about the index template. May have any contents.\nThis map is not automatically generated by Elasticsearch.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.Metadata"
        }
      ]
    },
    "allow_auto_create": {
      "type": "boolean"
    },
    "data_stream": {
      "description": "If this object is included, the template is used to create data streams and their backing indices.\nSupports an empty object.\nData streams require a matching index template with a `data_stream` object.",
      "allOf": [
        {
          "$ref": "#/$defs/indices._types.IndexTemplateDataStreamConfiguration"
        }
      ]
    },
    "deprecated": {
      "description": "Marks this index template as deprecated.\nWhen creating or updating a non-deprecated index template that uses deprecated components,\nElasticsearch will emit a deprecation warning.",
      "x-state": "Generally available; Added in 8.12.0",
      "type": "boolean"
    },
    "ignore_missing_component_templates": {
      "description": "A list of component template names that are allowed to be absent.",
      "x-state": "Generally available; Added in 8.7.0",
      "allOf": [
        {
          "$ref": "#/$defs/_types.Names"
        }
      ]
    },
    "created_date": {
      "description": "Date and time when the index template was created. Only returned if the `human` query parameter is `true`.",
      "x-state": "Generally available; Added in 9.2.0",
      "allOf": [
        {
          "$ref": "#/$defs/_types.DateTime"
        }
      ]
    },
    "created_date_millis": {
      "description": "Date and time when the index template was created, in milliseconds since the epoch.",
      "x-state": "Generally available; Added in 9.2.0",
      "allOf": [
        {
          "$ref": "#/$defs/_types.EpochTimeUnitMillis"
        }
      ]
    },
    "modified_date": {
      "description": "Date and time when the index template was last modified. Only returned if the `human` query parameter is `true`.",
      "x-state": "Generally available; Added in 9.2.0",
      "allOf": [
        {
          "$ref": "#/$defs/_types.DateTime"
        }
      ]
    },
    "modified_date_millis": {
      "description": "Date and time when the index template was last modified, in milliseconds since the epoch.",
      "x-state": "Generally available; Added in 9.2.0",
      "allOf": [
        {
          "$ref": "#/$defs/_types.EpochTimeUnitMillis"
        }
      ]
    }
  },
  "required": [
    "index_patterns",
    "composed_of"
  ],
  "$defs": {
    "_global.search._types.BoundaryScanner": {
      "type": "string",
      "enum": [
        "chars",
        "sentence",
        "word"
      ]
    },
    "_global.search._types.FieldCollapse": {
      "type": "object",
      "properties": {
        "field": {
          "description": "The field to collapse the result set on",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "inner_hits": {
          "description": "The number of inner hits and their sort order",
          "oneOf": [
            {
              "$ref": "#/$defs/_global.search._types.InnerHits"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/_global.search._types.InnerHits"
              }
            }
          ]
        },
        "max_concurrent_group_searches": {
          "description": "The number of concurrent requests allowed to retrieve the inner_hits per group",
          "type": "number"
        },
        "collapse": {
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.FieldCollapse"
            }
          ]
        }
      },
      "required": [
        "field"
      ]
    },
    "_global.search._types.Highlight": {
      "allOf": [
        {
          "$ref": "#/$defs/_global.search._types.HighlightBase"
        },
        {
          "type": "object",
          "properties": {
            "encoder": {
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.HighlighterEncoder"
                }
              ]
            },
            "fields": {
              "oneOf": [
                {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/$defs/_global.search._types.HighlightField"
                  },
                  "minProperties": 1,
                  "maxProperties": 1
                },
                {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": {
                      "$ref": "#/$defs/_global.search._types.HighlightField"
                    },
                    "minProperties": 1,
                    "maxProperties": 1
                  }
                }
              ]
            }
          },
          "required": [
            "fields"
          ]
        }
      ]
    },
    "_global.search._types.HighlightBase": {
      "type": "object",
      "properties": {
        "type": {
          "description": "\n\nSupported values include:\n  - `plain`: The `plain` highlighter uses the standard Lucene highlighter\n  - `fvh`: The fvh highlighter uses the Lucene Fast Vector highlighter.\n  - `unified`: The unified highlighter uses the Lucene Unified Highlighter.\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.HighlighterType"
            }
          ]
        },
        "boundary_chars": {
          "description": "A string that contains each boundary character.",
          "default": ".,!? \\t\\n",
          "type": "string"
        },
        "boundary_max_scan": {
          "description": "How far to scan for boundary characters.",
          "default": 20.0,
          "type": "number"
        },
        "boundary_scanner": {
          "description": "Specifies how to break the highlighted fragments: chars, sentence, or word.\nOnly valid for the unified and fvh highlighters.\nDefaults to `sentence` for the `unified` highlighter. Defaults to `chars` for the `fvh` highlighter.\n\nSupported values include:\n  - `chars`: Use the characters specified by `boundary_chars` as highlighting boundaries.\nThe `boundary_max_scan` setting controls how far to scan for boundary characters.\nOnly valid for the `fvh` highlighter.\n  - `sentence`: Break highlighted fragments at the next sentence boundary, as determined by Java’s `BreakIterator`.\nYou can specify the locale to use with `boundary_scanner_locale`.\nWhen used with the `unified` highlighter, the `sentence` scanner splits sentences bigger than `fragment_size` at the first word boundary next to fragment_size.\nYou can set `fragment_size` to `0` to never split any sentence.\n  - `word`: Break highlighted fragments at the next word boundary, as determined by Java’s `BreakIterator`.\nYou can specify the locale to use with `boundary_scanner_locale`.\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.BoundaryScanner"
            }
          ]
        },
        "boundary_scanner_locale": {
          "description": "Controls which locale is used to search for sentence and word boundaries.\nThis parameter takes a form of a language tag, for example: `\"en-US\"`, `\"fr-FR\"`, `\"ja-JP\"`.",
          "default": "Locale.ROOT",
          "type": "string"
        },
        "force_source": {
          "deprecated": true,
          "type": "boolean"
        },
        "fragmenter": {
          "description": "Specifies how text should be broken up in highlight snippets: `simple` or `span`.\nOnly valid for the `plain` highlighter.",
          "default": "span",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.HighlighterFragmenter"
            }
          ]
        },
        "fragment_size": {
          "description": "The size of the highlighted fragment in characters.",
          "default": 100.0,
          "type": "number"
        },
        "highlight_filter": {
          "type": "boolean"
        },
        "highlight_query": {
          "description": "Highlight matches for a query other than the search query.\nThis is especially useful if you use a rescore query because those are not taken into account by highlighting by default.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            }
          ]
        },
        "max_fragment_length": {
          "type": "number"
        },
        "max_analyzed_offset": {
          "description": "If set to a non-negative value, highlighting stops at this defined maximum limit.\nThe rest of the text is not processed, thus not highlighted and no error is returned\nThe `max_analyzed_offset` query setting does not override the `index.highlight.max_analyzed_offset` setting, which prevails when it’s set to lower value than the query setting.",
          "type": "number"
        },
        "no_match_size": {
          "description": "The amount of text you want to return from the beginning of the field if there are no matching fragments to highlight.",
          "default": 0.0,
          "type": "number"
        },
        "number_of_fragments": {
          "description": "The maximum number of fragments to return.\nIf the number of fragments is set to `0`, no fragments are returned.\nInstead, the entire field contents are highlighted and returned.\nThis can be handy when you need to highlight short texts such as a title or address, but fragmentation is not required.\nIf `number_of_fragments` is `0`, `fragment_size` is ignored.",
          "default": 5.0,
          "type": "number"
        },
        "options": {
          "type": "object",
          "additionalProperties": {
            "type": "object"
          }
        },
        "order": {
          "description": "Sorts highlighted fragments by score when set to `score`.\nBy default, fragments will be output in the order they appear in the field (order: `none`).\nSetting this option to `score` will output the most relevant fragments first.\nEach highlighter applies its own logic to compute relevancy scores.",
          "default": "none",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.HighlighterOrder"
            }
          ]
        },
        "phrase_limit": {
          "description": "Controls the number of matching phrases in a document that are considered.\nPrevents the `fvh` highlighter from analyzing too many phrases and consuming too much memory.\nWhen using `matched_fields`, `phrase_limit` phrases per matched field are considered. Raising the limit increases query time and consumes more memory.\nOnly supported by the `fvh` highlighter.",
          "default": 256.0,
          "type": "number"
        },
        "post_tags": {
          "description": "Use in conjunction with `pre_tags` to define the HTML tags to use for the highlighted text.\nBy default, highlighted text is wrapped in `<em>` and `</em>` tags.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "pre_tags": {
          "description": "Use in conjunction with `post_tags` to define the HTML tags to use for the highlighted text.\nBy default, highlighted text is wrapped in `<em>` and `</em>` tags.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "require_field_match": {
          "description": "By default, only fields that contains a query match are highlighted.\nSet to `false` to highlight all fields.",
          "default": true,
          "type": "boolean"
        },
        "tags_schema": {
          "description": "Set to `styled` to use the built-in tag schema.",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.HighlighterTagsSchema"
            }
          ]
        }
      }
    },
    "_global.search._types.HighlightField": {
      "allOf": [
        {
          "$ref": "#/$defs/_global.search._types.HighlightBase"
        },
        {
          "type": "object",
          "properties": {
            "fragment_offset": {
              "type": "number"
            },
            "matched_fields": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fields"
                }
              ]
            }
          }
        }
      ]
    },
    "_global.search._types.HighlighterEncoder": {
      "type": "string",
      "enum": [
        "default",
        "html"
      ]
    },
    "_global.search._types.HighlighterFragmenter": {
      "type": "string",
      "enum": [
        "simple",
        "span"
      ]
    },
    "_global.search._types.HighlighterOrder": {
      "type": "string",
      "enum": [
        "score"
      ]
    },
    "_global.search._types.HighlighterTagsSchema": {
      "type": "string",
      "enum": [
        "styled"
      ]
    },
    "_global.search._types.HighlighterType": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "plain",
            "fvh",
            "unified"
          ]
        },
        {
          "type": "string"
        }
      ]
    },
    "_global.search._types.InnerHits": {
      "type": "object",
      "properties": {
        "name": {
          "description": "The name for the particular inner hit definition in the response.\nUseful when a search request contains multiple inner hits.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Name"
            }
          ]
        },
        "size": {
          "description": "The maximum number of hits to return per `inner_hits`.",
          "default": 3.0,
          "type": "number"
        },
        "from": {
          "description": "Inner hit starting document offset.",
          "default": 0.0,
          "type": "number"
        },
        "collapse": {
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.FieldCollapse"
            }
          ]
        },
        "docvalue_fields": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.query_dsl.FieldAndFormat"
          }
        },
        "explain": {
          "type": "boolean"
        },
        "highlight": {
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.Highlight"
            }
          ]
        },
        "ignore_unmapped": {
          "type": "boolean"
        },
        "script_fields": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.ScriptField"
          }
        },
        "seq_no_primary_term": {
          "type": "boolean"
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.Field"
          }
        },
        "sort": {
          "description": "How the inner hits should be sorted per `inner_hits`.\nBy default, inner hits are sorted by score.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Sort"
            }
          ]
        },
        "_source": {
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.SourceConfig"
            }
          ]
        },
        "stored_fields": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Fields"
            }
          ]
        },
        "track_scores": {
          "default": false,
          "type": "boolean"
        },
        "version": {
          "type": "boolean"
        }
      }
    },
    "_global.search._types.LearningToRank": {
      "type": "object",
      "properties": {
        "model_id": {
          "description": "The unique identifier of the trained model uploaded to Elasticsearch",
          "type": "string"
        },
        "params": {
          "description": "Named parameters to be passed to the query templates used for feature",
          "type": "object",
          "additionalProperties": {
            "type": "object"
          }
        }
      },
      "required": [
        "model_id"
      ]
    },
    "_global.search._types.PointInTimeReference": {
      "type": "object",
      "properties": {
        "id": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        },
        "keep_alive": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        }
      },
      "required": [
        "id"
      ]
    },
    "_global.search._types.Rescore": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "window_size": {
              "type": "number"
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "query": {
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.RescoreQuery"
                }
              ]
            },
            "learning_to_rank": {
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.LearningToRank"
                }
              ]
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.ScriptRescore"
                }
              ]
            }
          },
          "minProperties": 1,
          "maxProperties": 1
        }
      ]
    },
    "_global.search._types.RescoreQuery": {
      "type": "object",
      "properties": {
        "rescore_query": {
          "description": "The query to use for rescoring.\nThis query is only run on the Top-K results returned by the `query` and `post_filter` phases.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            }
          ]
        },
        "query_weight": {
          "description": "Relative importance of the original query versus the rescore query.",
          "default": 1.0,
          "type": "number"
        },
        "rescore_query_weight": {
          "description": "Relative importance of the rescore query versus the original query.",
          "default": 1.0,
          "type": "number"
        },
        "score_mode": {
          "description": "Determines how scores are combined.\n\nSupported values include:\n  - `avg`: Average the original score and the rescore query score.\n  - `max`: Take the max of original score and the rescore query score.\n  - `min`: Take the min of the original score and the rescore query score.\n  - `multiply`: Multiply the original score by the rescore query score.\nUseful for `function` query rescores.\n  - `total`: Add the original score and the rescore query score.\n\n",
          "default": "total",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.ScoreMode"
            }
          ]
        }
      },
      "required": [
        "rescore_query"
      ]
    },
    "_global.search._types.ScoreMode": {
      "type": "string",
      "enum": [
        "avg",
        "max",
        "min",
        "multiply",
        "total"
      ]
    },
    "_global.search._types.ScriptRescore": {
      "type": "object",
      "properties": {
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        }
      },
      "required": [
        "script"
      ]
    },
    "_global.search._types.SearchRequestBody": {
      "type": "object",
      "properties": {
        "aggregations": {
          "description": "Defines the aggregations that are run as part of the search request.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.aggregations.AggregationContainer"
          }
        },
        "collapse": {
          "description": "Collapses search results the values of the specified field.",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.FieldCollapse"
            }
          ]
        },
        "explain": {
          "description": "If `true`, the request returns detailed information about score computation as part of a hit.",
          "default": false,
          "type": "boolean"
        },
        "ext": {
          "description": "Configuration of search extensions defined by Elasticsearch plugins.",
          "type": "object",
          "additionalProperties": {
            "type": "object"
          }
        },
        "from": {
          "description": "The starting document offset, which must be non-negative.\nBy default, you cannot page through more than 10,000 hits using the `from` and `size` parameters.\nTo page through more hits, use the `search_after` parameter.",
          "default": 0.0,
          "type": "number"
        },
        "highlight": {
          "description": "Specifies the highlighter to use for retrieving highlighted snippets from one or more fields in your search results.",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.Highlight"
            }
          ]
        },
        "track_total_hits": {
          "description": "Number of hits matching the query to count accurately.\nIf `true`, the exact number of hits is returned at the cost of some performance.\nIf `false`, the  response does not include the total number of hits matching the query.",
          "default": "10000",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.TrackHits"
            }
          ]
        },
        "indices_boost": {
          "description": "Boost the `_score` of documents from specified indices.\nThe boost value is the factor by which scores are multiplied.\nA boost value greater than `1.0` increases the score.\nA boost value between `0` and `1.0` decreases the score.",
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "number"
            },
            "minProperties": 1,
            "maxProperties": 1
          }
        },
        "docvalue_fields": {
          "description": "An array of wildcard (`*`) field patterns.\nThe request returns doc values for field names matching these patterns in the `hits.fields` property of the response.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.query_dsl.FieldAndFormat"
          }
        },
        "knn": {
          "description": "The approximate kNN search to run.",
          "x-state": "Generally available; Added in 8.4.0",
          "oneOf": [
            {
              "$ref": "#/$defs/_types.KnnSearch"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.KnnSearch"
              }
            }
          ]
        },
        "rank": {
          "description": "The Reciprocal Rank Fusion (RRF) to use.",
          "x-state": "Generally available; Added in 8.8.0",
          "allOf": [
            {
              "$ref": "#/$defs/_types.RankContainer"
            }
          ]
        },
        "min_score": {
          "description": "The minimum `_score` for matching documents.\nDocuments with a lower `_score` are not included in search results or results collected by aggregations.",
          "type": "number"
        },
        "post_filter": {
          "description": "Use the `post_filter` parameter to filter search results.\nThe search hits are filtered after the aggregations are calculated.\nA post filter has no impact on the aggregation results.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            }
          ]
        },
        "profile": {
          "description": "Set to `true` to return detailed timing information about the execution of individual components in a search request.\nNOTE: This is a debugging tool and adds significant overhead to search execution.",
          "default": false,
          "type": "boolean"
        },
        "query": {
          "description": "The search definition using the Query DSL.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            }
          ]
        },
        "rescore": {
          "description": "Can be used to improve precision by reordering just the top (for example 100 - 500) documents returned by the `query` and `post_filter` phases.",
          "oneOf": [
            {
              "$ref": "#/$defs/_global.search._types.Rescore"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/_global.search._types.Rescore"
              }
            }
          ]
        },
        "retriever": {
          "description": "A retriever is a specification to describe top documents returned from a search.\nA retriever replaces other elements of the search API that also return top documents such as `query` and `knn`.",
          "x-state": "Generally available; Added in 8.14.0",
          "allOf": [
            {
              "$ref": "#/$defs/_types.RetrieverContainer"
            }
          ]
        },
        "script_fields": {
          "description": "Retrieve a script evaluation (based on different fields) for each hit.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.ScriptField"
          }
        },
        "search_after": {
          "description": "Used to retrieve the next page of hits using a set of sort values from the previous page.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.SortResults"
            }
          ]
        },
        "size": {
          "description": "The number of hits to return, which must not be negative.\nBy default, you cannot page through more than 10,000 hits using the `from` and `size` parameters.\nTo page through more hits, use the `search_after` property.",
          "default": 10.0,
          "type": "number"
        },
        "slice": {
          "description": "Split a scrolled search into multiple slices that can be consumed independently.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.SlicedScroll"
            }
          ]
        },
        "sort": {
          "description": "A comma-separated list of <field>:<direction> pairs.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Sort"
            }
          ]
        },
        "_source": {
          "description": "The source fields that are returned for matching documents.\nThese fields are returned in the `hits._source` property of the search response.\nIf the `stored_fields` property is specified, the `_source` property defaults to `false`.\nOtherwise, it defaults to `true`.",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.SourceConfig"
            }
          ]
        },
        "fields": {
          "description": "An array of wildcard (`*`) field patterns.\nThe request returns values for field names matching these patterns in the `hits.fields` property of the response.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.query_dsl.FieldAndFormat"
          }
        },
        "suggest": {
          "description": "Defines a suggester that provides similar looking terms based on a provided text.",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.Suggester"
            }
          ]
        },
        "terminate_after": {
          "description": "The maximum number of documents to collect for each shard.\nIf a query reaches this limit, Elasticsearch terminates the query early.\nElasticsearch collects documents before sorting.\n\nIMPORTANT: Use with caution.\nElasticsearch applies this property to each shard handling the request.\nWhen possible, let Elasticsearch perform early termination automatically.\nAvoid specifying this property for requests that target data streams with backing indices across multiple data tiers.\n\nIf set to `0` (default), the query does not terminate early.",
          "default": 0.0,
          "type": "number"
        },
        "timeout": {
          "description": "The period of time to wait for a response from each shard.\nIf no response is received before the timeout expires, the request fails and returns an error.\nDefaults to no timeout.",
          "type": "string"
        },
        "track_scores": {
          "description": "If `true`, calculate and return document scores, even if the scores are not used for sorting.",
          "default": false,
          "type": "boolean"
        },
        "version": {
          "description": "If `true`, the request returns the document version as part of a hit.",
          "default": false,
          "type": "boolean"
        },
        "seq_no_primary_term": {
          "description": "If `true`, the request returns sequence number and primary term of the last modification of each hit.",
          "type": "boolean"
        },
        "stored_fields": {
          "description": "A comma-separated list of stored fields to return as part of a hit.\nIf no fields are specified, no stored fields are included in the response.\nIf this field is specified, the `_source` property defaults to `false`.\nYou can pass `_source: true` to return both source fields and stored fields in the search response.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Fields"
            }
          ]
        },
        "pit": {
          "description": "Limit the search to a point in time (PIT).\nIf you provide a PIT, you cannot specify an `<index>` in the request path.",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.PointInTimeReference"
            }
          ]
        },
        "runtime_mappings": {
          "description": "One or more runtime fields in the search request.\nThese fields take precedence over mapped fields with the same name.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.RuntimeFields"
            }
          ]
        },
        "stats": {
          "description": "The stats groups to associate with the search.\nEach group maintains a statistics aggregation for its associated searches.\nYou can retrieve these stats using the indices stats API.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "_global.search._types.SourceConfig": {
      "description": "Defines how to fetch a source. Fetching can be disabled entirely, or the source can be filtered.",
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "$ref": "#/$defs/_global.search._types.SourceFilter"
        }
      ]
    },
    "_global.search._types.SourceFilter": {
      "type": "object",
      "properties": {
        "exclude_vectors": {
          "description": "If `true`, vector fields are excluded from the returned source.\n\nThis option takes precedence over `includes`: any vector field will\nremain excluded even if it matches an `includes` rule.",
          "type": "boolean"
        },
        "excludes": {
          "description": "A list of fields to exclude from the returned source.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Fields"
            }
          ]
        },
        "includes": {
          "description": "A list of fields to include in the returned source.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Fields"
            }
          ]
        }
      }
    },
    "_global.search._types.Suggester": {
      "type": "object",
      "properties": {
        "text": {
          "description": "Global suggest text, to avoid repetition when the same text is used in several suggesters",
          "type": "string"
        }
      }
    },
    "_global.search._types.TrackHits": {
      "description": "Number of hits matching the query to count accurately. If true, the exact\nnumber of hits is returned at the cost of some performance. If false, the\nresponse does not include the total number of hits matching the query.\nDefaults to 10,000 hits.",
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "number"
        }
      ]
    },
    "_spec_utils.NullValue": {
      "description": "A `null` value that is to be interpreted as an actual value, unless other uses of `null` that are equivalent\nto a missing value. It is used for exemple in settings, where using the `NullValue` for a setting will reset\nit to its default value.",
      "type": [
        "string",
        "null"
      ]
    },
    "_spec_utils.PipeSeparatedFlagsSimpleQueryStringFlag": {
      "description": "A set of flags that can be represented as a single enum value or a set of values that are encoded\nas a pipe-separated string\n\nDepending on the target language, code generators can use this hint to generate language specific\nflags enum constructs and the corresponding (de-)serialization code.",
      "oneOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.SimpleQueryStringFlag"
        },
        {
          "type": "string"
        }
      ]
    },
    "_spec_utils.StringifiedEpochTimeUnitMillis": {
      "description": "Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior\nis used to capture this behavior while keeping the semantics of the field type.\n\nDepending on the target language, code generators can keep the union or remove it and leniently parse\nstrings to the target type.",
      "oneOf": [
        {
          "$ref": "#/$defs/_types.EpochTimeUnitMillis"
        },
        {
          "type": "string"
        }
      ]
    },
    "_spec_utils.Stringifiedboolean": {
      "description": "Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior\nis used to capture this behavior while keeping the semantics of the field type.\n\nDepending on the target language, code generators can keep the union or remove it and leniently parse\nstrings to the target type.",
      "oneOf": [
        {
          "type": "boolean"
        },
        {
          "type": "string"
        }
      ]
    },
    "_spec_utils.Stringifiedinteger": {
      "description": "Some APIs will return values such as numbers also as a string (notably epoch timestamps). This behavior\nis used to capture this behavior while keeping the semantics of the field type.\n\nDepending on the target language, code generators can keep the union or remove it and leniently parse\nstrings to the target type.",
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        }
      ]
    },
    "_types.ByteSize": {
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        }
      ]
    },
    "_types.ChunkRescorer": {
      "type": "object",
      "properties": {
        "size": {
          "description": "The number of chunks per document to evaluate for reranking.",
          "type": "number"
        },
        "chunking_settings": {
          "description": "Chunking settings to apply",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.ChunkRescorerChunkingSettings"
            }
          ]
        }
      }
    },
    "_types.CoordsGeoBounds": {
      "type": "object",
      "properties": {
        "top": {
          "type": "number"
        },
        "bottom": {
          "type": "number"
        },
        "left": {
          "type": "number"
        },
        "right": {
          "type": "number"
        }
      },
      "required": [
        "top",
        "bottom",
        "left",
        "right"
      ]
    },
    "_types.DFIIndependenceMeasure": {
      "type": "string",
      "enum": [
        "standardized",
        "saturated",
        "chisquared"
      ]
    },
    "_types.DFRAfterEffect": {
      "type": "string",
      "enum": [
        "no",
        "b",
        "l"
      ]
    },
    "_types.DFRBasicModel": {
      "type": "string",
      "enum": [
        "be",
        "d",
        "g",
        "if",
        "in",
        "ine",
        "p"
      ]
    },
    "_types.DateFormat": {
      "type": "string"
    },
    "_types.DateMath": {
      "type": "string"
    },
    "_types.DateTime": {
      "description": "A date and time, either as a string whose format can depend on the context (defaulting to ISO 8601), or a\nnumber of milliseconds since the Epoch. Elasticsearch accepts both as input, but will generally output a string\nrepresentation.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/_types.EpochTimeUnitMillis"
        }
      ]
    },
    "_types.Distance": {
      "type": "string"
    },
    "_types.DistanceUnit": {
      "type": "string",
      "enum": [
        "in",
        "ft",
        "yd",
        "mi",
        "nmi",
        "km",
        "m",
        "cm",
        "mm"
      ]
    },
    "_types.DiversifyRetriever": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "description": "The diversification strategy to apply.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DiversifyRetrieverTypes"
                }
              ]
            },
            "field": {
              "description": "The document field on which to diversify results on.",
              "type": "string"
            },
            "retriever": {
              "description": "The nested retriever whose results will be diversified.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RetrieverContainer"
                }
              ]
            },
            "size": {
              "description": "The number of top documents to return after diversification.",
              "type": "number"
            },
            "rank_window_size": {
              "description": "The number of top documents from the nested retriever to consider for diversification.",
              "type": "number"
            },
            "query_vector": {
              "description": "The query vector used for diversification.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.QueryVector"
                }
              ]
            },
            "query_vector_builder": {
              "description": "a dense vector query vector builder to use instead of a static query_vector",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.QueryVectorBuilder"
                }
              ]
            },
            "lambda": {
              "description": "Controls the trade-off between relevance and diversity for MMR. A value of 0.0 focuses solely on diversity, while a value of 1.0 focuses solely on relevance. Required for MMR",
              "type": "number"
            }
          },
          "required": [
            "type",
            "field",
            "retriever"
          ]
        }
      ]
    },
    "_types.DiversifyRetrieverTypes": {
      "type": "string",
      "enum": [
        "mmr"
      ]
    },
    "_types.Duration": {
      "description": "A duration. Units can be `nanos`, `micros`, `ms` (milliseconds), `s` (seconds), `m` (minutes), `h` (hours) and\n`d` (days). Also accepts \"0\" without a unit and \"-1\" to indicate an unspecified value.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "string",
          "enum": [
            "-1"
          ]
        },
        {
          "type": "string",
          "enum": [
            "0"
          ]
        }
      ]
    },
    "_types.DurationLarge": {
      "description": "A date histogram interval. Similar to `Duration` with additional units: `w` (week), `M` (month), `q` (quarter) and\n`y` (year)",
      "type": "string"
    },
    "_types.EmptyObject": {
      "description": "For empty Class assignments",
      "type": "object"
    },
    "_types.EpochTimeUnitMillis": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.UnitMillis"
        }
      ]
    },
    "_types.Field": {
      "description": "Path to field or array of paths. Some API's support wildcards in the path to select multiple fields.",
      "type": "string"
    },
    "_types.FieldValue": {
      "description": "A field value.",
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "number"
        },
        {
          "type": "string"
        },
        {
          "type": "boolean"
        },
        {
          "type": [
            "string",
            "null"
          ]
        }
      ]
    },
    "_types.Fields": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.Field"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.Field"
          }
        }
      ]
    },
    "_types.Fuzziness": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ]
    },
    "_types.GeoBounds": {
      "description": "A geo bounding box. It can be represented in various ways:\n- as 4 top/bottom/left/right coordinates\n- as 2 top_left / bottom_right points\n- as 2 top_right / bottom_left points\n- as a WKT bounding box",
      "oneOf": [
        {
          "$ref": "#/$defs/_types.CoordsGeoBounds"
        },
        {
          "$ref": "#/$defs/_types.TopLeftBottomRightGeoBounds"
        },
        {
          "$ref": "#/$defs/_types.TopRightBottomLeftGeoBounds"
        },
        {
          "$ref": "#/$defs/_types.WktGeoBounds"
        }
      ]
    },
    "_types.GeoDistanceSort": {
      "type": "object",
      "properties": {
        "mode": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.SortMode"
            }
          ]
        },
        "distance_type": {
          "description": "\n\nSupported values include:\n  - `arc`: The `arc` calculation is the most accurate.\n  - `plane`: The `plane` calculation is faster but less accurate.\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.GeoDistanceType"
            }
          ]
        },
        "ignore_unmapped": {
          "type": "boolean"
        },
        "order": {
          "description": "\n\nSupported values include:\n  - `asc`: Ascending (smallest to largest)\n  - `desc`: Descending (largest to smallest)\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.SortOrder"
            }
          ]
        },
        "unit": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.DistanceUnit"
            }
          ]
        },
        "nested": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.NestedSortValue"
            }
          ]
        }
      }
    },
    "_types.GeoDistanceType": {
      "type": "string",
      "enum": [
        "arc",
        "plane"
      ]
    },
    "_types.GeoHash": {
      "type": "string"
    },
    "_types.GeoHashLocation": {
      "type": "object",
      "properties": {
        "geohash": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.GeoHash"
            }
          ]
        }
      },
      "required": [
        "geohash"
      ]
    },
    "_types.GeoHashPrecision": {
      "description": "A precision that can be expressed as a geohash length between 1 and 12, or a distance measure like \"1km\", \"10m\".",
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        }
      ]
    },
    "_types.GeoHexCell": {
      "description": "A map hex cell (H3) reference",
      "type": "string"
    },
    "_types.GeoLocation": {
      "description": "A latitude/longitude as a 2 dimensional point. It can be represented in various ways:\n- as a `{lat, long}` object\n- as a geo hash value\n- as a `[lon, lat]` array\n- as a string in `\"<lat>, <lon>\"` or WKT point formats",
      "oneOf": [
        {
          "$ref": "#/$defs/_types.LatLonGeoLocation"
        },
        {
          "$ref": "#/$defs/_types.GeoHashLocation"
        },
        {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        {
          "type": "string"
        }
      ]
    },
    "_types.GeoTile": {
      "description": "A map tile reference, represented as `{zoom}/{x}/{y}`",
      "type": "string"
    },
    "_types.GeoTilePrecision": {
      "type": "number"
    },
    "_types.IBDistribution": {
      "type": "string",
      "enum": [
        "ll",
        "spl"
      ]
    },
    "_types.IBLambda": {
      "type": "string",
      "enum": [
        "df",
        "ttf"
      ]
    },
    "_types.Id": {
      "type": "string"
    },
    "_types.Ids": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.Id"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.Id"
          }
        }
      ]
    },
    "_types.IndexName": {
      "type": "string"
    },
    "_types.InnerRetriever": {
      "type": "object",
      "properties": {
        "retriever": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.RetrieverContainer"
            }
          ]
        },
        "weight": {
          "type": "number"
        },
        "normalizer": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ScoreNormalizer"
            }
          ]
        }
      },
      "required": [
        "retriever",
        "weight",
        "normalizer"
      ]
    },
    "_types.KnnQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The name of the vector field to search against",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "query_vector": {
              "description": "The query vector",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.QueryVector"
                }
              ]
            },
            "query_vector_builder": {
              "description": "The query vector builder. You must provide a query_vector_builder or query_vector, but not both.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.QueryVectorBuilder"
                }
              ]
            },
            "num_candidates": {
              "description": "The number of nearest neighbor candidates to consider per shard",
              "type": "number"
            },
            "visit_percentage": {
              "description": "The percentage of vectors to explore per shard while doing knn search with bbq_disk",
              "x-state": "Generally available; Added in 9.2.0",
              "type": "number"
            },
            "k": {
              "description": "The final number of nearest neighbors to return as top hits",
              "type": "number"
            },
            "filter": {
              "description": "Filters for the kNN search query",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                  }
                }
              ]
            },
            "similarity": {
              "description": "The minimum similarity for a vector to be considered a match",
              "type": "number"
            },
            "rescore_vector": {
              "description": "Apply oversampling and rescoring to quantized vectors",
              "x-state": "Generally available; Added in 8.18.0",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RescoreVector"
                }
              ]
            }
          },
          "required": [
            "field"
          ]
        }
      ]
    },
    "_types.KnnRetriever": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The name of the vector field to search against.",
              "type": "string"
            },
            "query_vector": {
              "description": "Query vector. Must have the same number of dimensions as the vector field you are searching against. You must provide a query_vector_builder or query_vector, but not both.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.QueryVector"
                }
              ]
            },
            "query_vector_builder": {
              "description": "Defines a model to build a query vector.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.QueryVectorBuilder"
                }
              ]
            },
            "k": {
              "description": "Number of nearest neighbors to return as top hits.",
              "type": "number"
            },
            "num_candidates": {
              "description": "Number of nearest neighbor candidates to consider per shard.",
              "type": "number"
            },
            "visit_percentage": {
              "description": "The percentage of vectors to explore per shard while doing knn search with bbq_disk",
              "x-state": "Generally available; Added in 9.2.0",
              "type": "number"
            },
            "similarity": {
              "description": "The minimum similarity required for a document to be considered a match.",
              "type": "number"
            },
            "rescore_vector": {
              "description": "Apply oversampling and rescoring to quantized vectors",
              "x-state": "Generally available; Added in 8.18.0",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RescoreVector"
                }
              ]
            }
          },
          "required": [
            "field",
            "k",
            "num_candidates"
          ]
        }
      ]
    },
    "_types.KnnSearch": {
      "type": "object",
      "properties": {
        "field": {
          "description": "The name of the vector field to search against",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "query_vector": {
          "description": "The query vector",
          "allOf": [
            {
              "$ref": "#/$defs/_types.QueryVector"
            }
          ]
        },
        "query_vector_builder": {
          "description": "The query vector builder. You must provide a query_vector_builder or query_vector, but not both.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.QueryVectorBuilder"
            }
          ]
        },
        "k": {
          "description": "The final number of nearest neighbors to return as top hits",
          "type": "number"
        },
        "num_candidates": {
          "description": "The number of nearest neighbor candidates to consider per shard",
          "type": "number"
        },
        "visit_percentage": {
          "description": "The percentage of vectors to explore per shard while doing knn search with bbq_disk",
          "x-state": "Generally available; Added in 9.2.0",
          "type": "number"
        },
        "boost": {
          "description": "Boost value to apply to kNN scores",
          "type": "number"
        },
        "filter": {
          "description": "Filters for the kNN search query",
          "oneOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.query_dsl.QueryContainer"
              }
            }
          ]
        },
        "similarity": {
          "description": "The minimum similarity for a vector to be considered a match",
          "type": "number"
        },
        "inner_hits": {
          "description": "If defined, each search hit will contain inner hits.",
          "allOf": [
            {
              "$ref": "#/$defs/_global.search._types.InnerHits"
            }
          ]
        },
        "rescore_vector": {
          "description": "Apply oversampling and rescoring to quantized vectors",
          "x-state": "Generally available; Added in 8.18.0",
          "allOf": [
            {
              "$ref": "#/$defs/_types.RescoreVector"
            }
          ]
        },
        "_name": {
          "type": "string"
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.LatLonGeoLocation": {
      "type": "object",
      "properties": {
        "lat": {
          "description": "Latitude",
          "type": "number"
        },
        "lon": {
          "description": "Longitude",
          "type": "number"
        }
      },
      "required": [
        "lat",
        "lon"
      ]
    },
    "_types.LinearRetriever": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "retrievers": {
              "description": "Inner retrievers.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.InnerRetriever"
              }
            },
            "rank_window_size": {
              "type": "number"
            },
            "query": {
              "type": "string"
            },
            "fields": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "normalizer": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.ScoreNormalizer"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.Metadata": {
      "type": "object",
      "additionalProperties": {
        "type": "object"
      }
    },
    "_types.MinimumShouldMatch": {
      "description": "The minimum number of terms that should match as integer, percentage or range",
      "oneOf": [
        {
          "type": "number"
        },
        {
          "type": "string"
        }
      ]
    },
    "_types.MultiTermQueryRewrite": {
      "type": "string"
    },
    "_types.Name": {
      "type": "string"
    },
    "_types.Names": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.Name"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.Name"
          }
        }
      ]
    },
    "_types.NestedSortValue": {
      "type": "object",
      "properties": {
        "filter": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            }
          ]
        },
        "max_children": {
          "type": "number"
        },
        "nested": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.NestedSortValue"
            }
          ]
        },
        "path": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      },
      "required": [
        "path"
      ]
    },
    "_types.Normalization": {
      "type": "string",
      "enum": [
        "no",
        "h1",
        "h2",
        "h3",
        "z"
      ]
    },
    "_types.PinnedRetriever": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "retriever": {
              "description": "Inner retriever.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RetrieverContainer"
                }
              ]
            },
            "ids": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "docs": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.SpecifiedDocument"
              }
            },
            "rank_window_size": {
              "type": "number"
            }
          },
          "required": [
            "retriever"
          ]
        }
      ]
    },
    "_types.PipelineName": {
      "type": "string"
    },
    "_types.QueryVector": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "_types.QueryVectorBuilder": {
      "type": "object",
      "properties": {
        "text_embedding": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.TextEmbedding"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.RRFRetriever": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "retrievers": {
              "description": "A list of child retrievers to specify which sets of returned top documents will have the RRF formula applied to them. Each retriever can optionally include a weight parameter.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.RRFRetrieverEntry"
              }
            },
            "rank_constant": {
              "description": "This value determines how much influence documents in individual result sets per query have over the final ranked result set.",
              "type": "number"
            },
            "rank_window_size": {
              "description": "This value determines the size of the individual result sets per query.",
              "type": "number"
            },
            "query": {
              "type": "string"
            },
            "fields": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "retrievers"
          ]
        }
      ]
    },
    "_types.RRFRetrieverComponent": {
      "description": "Wraps a retriever with an optional weight for RRF scoring.",
      "type": "object",
      "properties": {
        "retriever": {
          "description": "The nested retriever configuration.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.RetrieverContainer"
            }
          ]
        },
        "weight": {
          "description": "Weight multiplier for this retriever's contribution to the RRF score. Higher values increase influence. Defaults to 1.0 if not specified. Must be non-negative.",
          "default": 1.0,
          "type": "number"
        }
      },
      "required": [
        "retriever"
      ]
    },
    "_types.RRFRetrieverEntry": {
      "description": "Either a direct RetrieverContainer (backward compatible) or an RRFRetrieverComponent with weight.",
      "oneOf": [
        {
          "$ref": "#/$defs/_types.RetrieverContainer"
        },
        {
          "$ref": "#/$defs/_types.RRFRetrieverComponent"
        }
      ]
    },
    "_types.RankBase": {
      "type": "object"
    },
    "_types.RankContainer": {
      "type": "object",
      "properties": {
        "rrf": {
          "description": "The reciprocal rank fusion parameters",
          "allOf": [
            {
              "$ref": "#/$defs/_types.RrfRank"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.RelationName": {
      "type": "string"
    },
    "_types.RescoreVector": {
      "type": "object",
      "properties": {
        "oversample": {
          "description": "Applies the specified oversample factor to k on the approximate kNN search",
          "type": "number"
        }
      },
      "required": [
        "oversample"
      ]
    },
    "_types.RescorerRetriever": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "retriever": {
              "description": "Inner retriever.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RetrieverContainer"
                }
              ]
            },
            "rescore": {
              "oneOf": [
                {
                  "$ref": "#/$defs/_global.search._types.Rescore"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_global.search._types.Rescore"
                  }
                }
              ]
            }
          },
          "required": [
            "retriever",
            "rescore"
          ]
        }
      ]
    },
    "_types.RetrieverBase": {
      "type": "object",
      "properties": {
        "filter": {
          "description": "Query to filter the documents that can match.",
          "oneOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.query_dsl.QueryContainer"
              }
            }
          ]
        },
        "min_score": {
          "description": "Minimum _score for matching documents. Documents with a lower _score are not included in the top documents.",
          "type": "number"
        },
        "_name": {
          "description": "Retriever name.",
          "type": "string"
        }
      }
    },
    "_types.RetrieverContainer": {
      "type": "object",
      "properties": {
        "standard": {
          "description": "A retriever that replaces the functionality of a traditional query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.StandardRetriever"
            }
          ]
        },
        "knn": {
          "description": "A retriever that replaces the functionality  of a knn search.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.KnnRetriever"
            }
          ]
        },
        "rrf": {
          "description": "A retriever that produces top documents from reciprocal rank fusion (RRF).",
          "allOf": [
            {
              "$ref": "#/$defs/_types.RRFRetriever"
            }
          ]
        },
        "text_similarity_reranker": {
          "description": "A retriever that reranks the top documents based on a reranking model using the InferenceAPI",
          "allOf": [
            {
              "$ref": "#/$defs/_types.TextSimilarityReranker"
            }
          ]
        },
        "rule": {
          "description": "A retriever that replaces the functionality of a rule query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.RuleRetriever"
            }
          ]
        },
        "rescorer": {
          "description": "A retriever that re-scores only the results produced by its child retriever.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.RescorerRetriever"
            }
          ]
        },
        "linear": {
          "description": "A retriever that supports the combination of different retrievers through a weighted linear combination.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.LinearRetriever"
            }
          ]
        },
        "pinned": {
          "description": "A pinned retriever applies pinned documents to the underlying retriever.\nThis retriever will rewrite to a PinnedQueryBuilder.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.PinnedRetriever"
            }
          ]
        },
        "diversify": {
          "description": "A retriever that diversifies the results from its child retriever.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.DiversifyRetriever"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.Routing": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "_types.RrfRank": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RankBase"
        },
        {
          "type": "object",
          "properties": {
            "rank_constant": {
              "description": "How much influence documents in individual result sets per query have over the final ranked result set",
              "type": "number"
            },
            "rank_window_size": {
              "description": "Size of the individual result sets per query",
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.RuleRetriever": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "ruleset_ids": {
              "description": "The ruleset IDs containing the rules this retriever is evaluating against.",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.Id"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.Id"
                  }
                }
              ]
            },
            "match_criteria": {
              "description": "The match criteria that will determine if a rule in the provided rulesets should be applied.",
              "type": "object"
            },
            "retriever": {
              "description": "The retriever whose results rules should be applied to.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RetrieverContainer"
                }
              ]
            },
            "rank_window_size": {
              "description": "This value determines the size of the individual result set.",
              "type": "number"
            }
          },
          "required": [
            "ruleset_ids",
            "match_criteria",
            "retriever"
          ]
        }
      ]
    },
    "_types.ScoreNormalizer": {
      "type": "string",
      "enum": [
        "none",
        "minmax",
        "l2_norm"
      ]
    },
    "_types.ScoreSort": {
      "type": "object",
      "properties": {
        "order": {
          "description": "\n\nSupported values include:\n  - `asc`: Ascending (smallest to largest)\n  - `desc`: Descending (largest to smallest)\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.SortOrder"
            }
          ]
        }
      }
    },
    "_types.Script": {
      "type": "object",
      "properties": {
        "source": {
          "description": "The script source.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.ScriptSource"
            }
          ]
        },
        "id": {
          "description": "The `id` for a stored script.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        },
        "params": {
          "description": "Specifies any named parameters that are passed into the script as variables.\nUse parameters instead of hard-coded values to decrease compile time.",
          "type": "object",
          "additionalProperties": {
            "type": "object"
          }
        },
        "lang": {
          "description": "Specifies the language the script is written in.\n\nSupported values include:\n  - `painless`: Painless scripting language, purpose-built for Elasticsearch.\n  - `expression`: Lucene’s expressions language, compiles a JavaScript expression to bytecode.\n  - `mustache`: Mustache templated, used for templates.\n  - `java`: Expert Java API\n\n",
          "default": "painless",
          "allOf": [
            {
              "$ref": "#/$defs/_types.ScriptLanguage"
            }
          ]
        },
        "options": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      }
    },
    "_types.ScriptField": {
      "type": "object",
      "properties": {
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        },
        "ignore_failure": {
          "type": "boolean"
        }
      },
      "required": [
        "script"
      ]
    },
    "_types.ScriptLanguage": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "painless",
            "expression",
            "mustache",
            "java"
          ]
        },
        {
          "type": "string"
        }
      ]
    },
    "_types.ScriptSort": {
      "type": "object",
      "properties": {
        "order": {
          "description": "\n\nSupported values include:\n  - `asc`: Ascending (smallest to largest)\n  - `desc`: Descending (largest to smallest)\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.SortOrder"
            }
          ]
        },
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        },
        "type": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ScriptSortType"
            }
          ]
        },
        "mode": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.SortMode"
            }
          ]
        },
        "nested": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.NestedSortValue"
            }
          ]
        }
      },
      "required": [
        "script"
      ]
    },
    "_types.ScriptSortType": {
      "type": "string",
      "enum": [
        "string",
        "number",
        "version"
      ]
    },
    "_types.ScriptSource": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/_global.search._types.SearchRequestBody"
        }
      ]
    },
    "_types.SlicedScroll": {
      "type": "object",
      "properties": {
        "field": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "id": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        },
        "max": {
          "type": "number"
        }
      },
      "required": [
        "id",
        "max"
      ]
    },
    "_types.Sort": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.SortCombinations"
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.SortCombinations"
          }
        }
      ]
    },
    "_types.SortCombinations": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.Field"
        },
        {
          "$ref": "#/$defs/_types.SortOptions"
        }
      ]
    },
    "_types.SortMode": {
      "type": "string",
      "enum": [
        "min",
        "max",
        "sum",
        "avg",
        "median"
      ]
    },
    "_types.SortOptions": {
      "type": "object",
      "properties": {
        "_score": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ScoreSort"
            }
          ]
        },
        "_doc": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ScoreSort"
            }
          ]
        },
        "_geo_distance": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.GeoDistanceSort"
            }
          ]
        },
        "_script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ScriptSort"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.SortOrder": {
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "_types.SortResults": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/_types.FieldValue"
      }
    },
    "_types.SpecifiedDocument": {
      "type": "object",
      "properties": {
        "index": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.IndexName"
            }
          ]
        },
        "id": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        }
      },
      "required": [
        "id"
      ]
    },
    "_types.StandardRetriever": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "query": {
              "description": "Defines a query to retrieve a set of top documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "search_after": {
              "description": "Defines a search after object parameter used for pagination.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.SortResults"
                }
              ]
            },
            "terminate_after": {
              "description": "Maximum number of documents to collect for each shard.",
              "type": "number"
            },
            "sort": {
              "description": "A sort object that that specifies the order of matching documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Sort"
                }
              ]
            },
            "collapse": {
              "description": "Collapses the top documents by a specified key into a single top document per key.",
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.FieldCollapse"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.TextEmbedding": {
      "type": "object",
      "properties": {
        "model_id": {
          "description": "Model ID is required for all dense_vector fields but\nmay be inferred for semantic_text fields",
          "x-state": "Generally available; Added in 8.18.0",
          "type": "string"
        },
        "model_text": {
          "type": "string"
        }
      },
      "required": [
        "model_text"
      ]
    },
    "_types.TextSimilarityReranker": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.RetrieverBase"
        },
        {
          "type": "object",
          "properties": {
            "retriever": {
              "description": "The nested retriever which will produce the first-level results, that will later be used for reranking.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RetrieverContainer"
                }
              ]
            },
            "rank_window_size": {
              "description": "This value determines how many documents we will consider from the nested retriever.",
              "type": "number"
            },
            "inference_id": {
              "description": "Unique identifier of the inference endpoint created using the inference API.",
              "type": "string"
            },
            "inference_text": {
              "description": "The text snippet used as the basis for similarity comparison.",
              "type": "string"
            },
            "field": {
              "description": "The document field to be used for text similarity comparisons. This field should contain the text that will be evaluated against the inference_text.",
              "type": "string"
            },
            "chunk_rescorer": {
              "description": "Whether to rescore on only the best matching chunks.",
              "x-state": "Generally available; Added in 9.2.0",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.ChunkRescorer"
                }
              ]
            }
          },
          "required": [
            "retriever",
            "inference_text",
            "field"
          ]
        }
      ]
    },
    "_types.TimeZone": {
      "type": "string"
    },
    "_types.TokenPruningConfig": {
      "type": "object",
      "properties": {
        "tokens_freq_ratio_threshold": {
          "description": "Tokens whose frequency is more than this threshold times the average frequency of all tokens in the specified field are considered outliers and pruned.",
          "default": 5.0,
          "type": "number"
        },
        "tokens_weight_threshold": {
          "description": "Tokens whose weight is less than this threshold are considered nonsignificant and pruned.",
          "default": 0.4,
          "type": "number"
        },
        "only_score_pruned_tokens": {
          "description": "Whether to only score pruned tokens, vs only scoring kept tokens.",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "_types.TopLeftBottomRightGeoBounds": {
      "type": "object",
      "properties": {
        "top_left": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.GeoLocation"
            }
          ]
        },
        "bottom_right": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.GeoLocation"
            }
          ]
        }
      },
      "required": [
        "top_left",
        "bottom_right"
      ]
    },
    "_types.TopRightBottomLeftGeoBounds": {
      "type": "object",
      "properties": {
        "top_right": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.GeoLocation"
            }
          ]
        },
        "bottom_left": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.GeoLocation"
            }
          ]
        }
      },
      "required": [
        "top_right",
        "bottom_left"
      ]
    },
    "_types.UnitMillis": {
      "description": "Time unit for milliseconds",
      "type": "number"
    },
    "_types.Uuid": {
      "type": "string"
    },
    "_types.VersionNumber": {
      "type": "number"
    },
    "_types.VersionString": {
      "type": "string"
    },
    "_types.VersionType": {
      "type": "string",
      "enum": [
        "internal",
        "external",
        "external_gte"
      ]
    },
    "_types.WktGeoBounds": {
      "type": "object",
      "properties": {
        "wkt": {
          "type": "string"
        }
      },
      "required": [
        "wkt"
      ]
    },
    "_types.aggregations.AdjacencyMatrixAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "filters": {
              "description": "Filters used to create buckets.\nAt least one filter is required.",
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/_types.query_dsl.QueryContainer"
              }
            },
            "separator": {
              "description": "Separator used to concatenate filter names. Defaults to &.",
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.aggregations.AggregateOrder": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.SortOrder"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/$defs/_types.SortOrder"
            },
            "minProperties": 1,
            "maxProperties": 1
          }
        }
      ]
    },
    "_types.aggregations.Aggregation": {
      "type": "object"
    },
    "_types.aggregations.AggregationContainer": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "aggregations": {
              "description": "Sub-aggregations for this aggregation.\nOnly applies to bucket aggregations.",
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/_types.aggregations.AggregationContainer"
              }
            },
            "meta": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Metadata"
                }
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "adjacency_matrix": {
              "description": "A bucket aggregation returning a form of adjacency matrix.\nThe request provides a collection of named filter expressions, similar to the `filters` aggregation.\nEach bucket in the response represents a non-empty cell in the matrix of intersecting filters.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.AdjacencyMatrixAggregation"
                }
              ]
            },
            "auto_date_histogram": {
              "description": "A multi-bucket aggregation similar to the date histogram, except instead of providing an interval to use as the width of each bucket, a target number of buckets is provided.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.AutoDateHistogramAggregation"
                }
              ]
            },
            "avg": {
              "description": "A single-value metrics aggregation that computes the average of numeric values that are extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.AverageAggregation"
                }
              ]
            },
            "avg_bucket": {
              "description": "A sibling pipeline aggregation which calculates the mean value of a specified metric in a sibling aggregation.\nThe specified metric must be numeric and the sibling aggregation must be a multi-bucket aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.AverageBucketAggregation"
                }
              ]
            },
            "boxplot": {
              "description": "A metrics aggregation that computes a box plot of numeric values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BoxplotAggregation"
                }
              ]
            },
            "bucket_script": {
              "description": "A parent pipeline aggregation which runs a script which can perform per bucket computations on metrics in the parent multi-bucket aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BucketScriptAggregation"
                }
              ]
            },
            "bucket_selector": {
              "description": "A parent pipeline aggregation which runs a script to determine whether the current bucket will be retained in the parent multi-bucket aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BucketSelectorAggregation"
                }
              ]
            },
            "bucket_sort": {
              "description": "A parent pipeline aggregation which sorts the buckets of its parent multi-bucket aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BucketSortAggregation"
                }
              ]
            },
            "bucket_count_ks_test": {
              "description": "A sibling pipeline aggregation which runs a two sample Kolmogorov–Smirnov test (\"K-S test\") against a provided distribution and the distribution implied by the documents counts in the configured sibling aggregation.",
              "x-state": "Technical preview",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BucketKsAggregation"
                }
              ]
            },
            "bucket_correlation": {
              "description": "A sibling pipeline aggregation which runs a correlation function on the configured sibling multi-bucket aggregation.",
              "x-state": "Technical preview",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BucketCorrelationAggregation"
                }
              ]
            },
            "cardinality": {
              "description": "A single-value metrics aggregation that calculates an approximate count of distinct values.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CardinalityAggregation"
                }
              ]
            },
            "cartesian_bounds": {
              "description": "A metric aggregation that computes the spatial bounding box containing all values for a Point or Shape field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CartesianBoundsAggregation"
                }
              ]
            },
            "cartesian_centroid": {
              "description": "A metric aggregation that computes the weighted centroid from all coordinate values for point and shape fields.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CartesianCentroidAggregation"
                }
              ]
            },
            "categorize_text": {
              "description": "A multi-bucket aggregation that groups semi-structured text into buckets.",
              "x-state": "Technical preview",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CategorizeTextAggregation"
                }
              ]
            },
            "change_point": {
              "description": "A sibling pipeline that detects, spikes, dips, and change points in a metric.\nGiven a distribution of values provided by the sibling multi-bucket aggregation,\nthis aggregation indicates the bucket of any spike or dip and/or the bucket at which\nthe largest change in the distribution of values, if they are statistically significant.\nThere must be at least 22 bucketed values. Fewer than 1,000 is preferred.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ChangePointAggregation"
                }
              ]
            },
            "children": {
              "description": "A single bucket aggregation that selects child documents that have the specified type, as defined in a `join` field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ChildrenAggregation"
                }
              ]
            },
            "composite": {
              "description": "A multi-bucket aggregation that creates composite buckets from different sources.\nUnlike the other multi-bucket aggregations, you can use the `composite` aggregation to paginate *all* buckets from a multi-level aggregation efficiently.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CompositeAggregation"
                }
              ]
            },
            "cumulative_cardinality": {
              "description": "A parent pipeline aggregation which calculates the cumulative cardinality in a parent `histogram` or `date_histogram` aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CumulativeCardinalityAggregation"
                }
              ]
            },
            "cumulative_sum": {
              "description": "A parent pipeline aggregation which calculates the cumulative sum of a specified metric in a parent `histogram` or `date_histogram` aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CumulativeSumAggregation"
                }
              ]
            },
            "date_histogram": {
              "description": "A multi-bucket values source based aggregation that can be applied on date values or date range values extracted from the documents.\nIt dynamically builds fixed size (interval) buckets over the values.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.DateHistogramAggregation"
                }
              ]
            },
            "date_range": {
              "description": "A multi-bucket value source based aggregation that enables the user to define a set of date ranges - each representing a bucket.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.DateRangeAggregation"
                }
              ]
            },
            "derivative": {
              "description": "A parent pipeline aggregation which calculates the derivative of a specified metric in a parent `histogram` or `date_histogram` aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.DerivativeAggregation"
                }
              ]
            },
            "diversified_sampler": {
              "description": "A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.\nSimilar to the `sampler` aggregation, but adds the ability to limit the number of matches that share a common value.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.DiversifiedSamplerAggregation"
                }
              ]
            },
            "extended_stats": {
              "description": "A multi-value metrics aggregation that computes stats over numeric values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ExtendedStatsAggregation"
                }
              ]
            },
            "extended_stats_bucket": {
              "description": "A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ExtendedStatsBucketAggregation"
                }
              ]
            },
            "frequent_item_sets": {
              "description": "A bucket aggregation which finds frequent item sets, a form of association rules mining that identifies items that often occur together.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.FrequentItemSetsAggregation"
                }
              ]
            },
            "filter": {
              "description": "A single bucket aggregation that narrows the set of documents to those that match a query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "filters": {
              "description": "A multi-bucket aggregation where each bucket contains the documents that match a query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.FiltersAggregation"
                }
              ]
            },
            "geo_bounds": {
              "description": "A metric aggregation that computes the geographic bounding box containing all values for a Geopoint or Geoshape field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GeoBoundsAggregation"
                }
              ]
            },
            "geo_centroid": {
              "description": "A metric aggregation that computes the weighted centroid from all coordinate values for geo fields.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GeoCentroidAggregation"
                }
              ]
            },
            "geo_distance": {
              "description": "A multi-bucket aggregation that works on `geo_point` fields.\nEvaluates the distance of each document value from an origin point and determines the buckets it belongs to, based on ranges defined in the request.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GeoDistanceAggregation"
                }
              ]
            },
            "geohash_grid": {
              "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell is labeled using a geohash which is of user-definable precision.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GeoHashGridAggregation"
                }
              ]
            },
            "geo_line": {
              "description": "Aggregates all `geo_point` values within a bucket into a `LineString` ordered by the chosen sort field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GeoLineAggregation"
                }
              ]
            },
            "geotile_grid": {
              "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell corresponds to a map tile as used by many online map sites.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GeoTileGridAggregation"
                }
              ]
            },
            "geohex_grid": {
              "description": "A multi-bucket aggregation that groups `geo_point` and `geo_shape` values into buckets that represent a grid.\nEach cell corresponds to a H3 cell index and is labeled using the H3Index representation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GeohexGridAggregation"
                }
              ]
            },
            "global": {
              "description": "Defines a single bucket of all the documents within the search execution context.\nThis context is defined by the indices and the document types you’re searching on, but is not influenced by the search query itself.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GlobalAggregation"
                }
              ]
            },
            "histogram": {
              "description": "A multi-bucket values source based aggregation that can be applied on numeric values or numeric range values extracted from the documents.\nIt dynamically builds fixed size (interval) buckets over the values.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.HistogramAggregation"
                }
              ]
            },
            "ip_range": {
              "description": "A multi-bucket value source based aggregation that enables the user to define a set of IP ranges - each representing a bucket.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.IpRangeAggregation"
                }
              ]
            },
            "ip_prefix": {
              "description": "A bucket aggregation that groups documents based on the network or sub-network of an IP address.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.IpPrefixAggregation"
                }
              ]
            },
            "inference": {
              "description": "A parent pipeline aggregation which loads a pre-trained model and performs inference on the collated result fields from the parent bucket aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.InferenceAggregation"
                }
              ]
            },
            "line": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GeoLineAggregation"
                }
              ]
            },
            "matrix_stats": {
              "description": "A numeric aggregation that computes the following statistics over a set of document fields: `count`, `mean`, `variance`, `skewness`, `kurtosis`, `covariance`, and `covariance`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MatrixStatsAggregation"
                }
              ]
            },
            "max": {
              "description": "A single-value metrics aggregation that returns the maximum value among the numeric values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MaxAggregation"
                }
              ]
            },
            "max_bucket": {
              "description": "A sibling pipeline aggregation which identifies the bucket(s) with the maximum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MaxBucketAggregation"
                }
              ]
            },
            "median_absolute_deviation": {
              "description": "A single-value aggregation that approximates the median absolute deviation of its search results.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MedianAbsoluteDeviationAggregation"
                }
              ]
            },
            "min": {
              "description": "A single-value metrics aggregation that returns the minimum value among numeric values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MinAggregation"
                }
              ]
            },
            "min_bucket": {
              "description": "A sibling pipeline aggregation which identifies the bucket(s) with the minimum value of a specified metric in a sibling aggregation and outputs both the value and the key(s) of the bucket(s).",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MinBucketAggregation"
                }
              ]
            },
            "missing": {
              "description": "A field data based single bucket aggregation, that creates a bucket of all documents in the current document set context that are missing a field value (effectively, missing a field or having the configured NULL value set).",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MissingAggregation"
                }
              ]
            },
            "moving_avg": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MovingAverageAggregation"
                }
              ]
            },
            "moving_percentiles": {
              "description": "Given an ordered series of percentiles, \"slides\" a window across those percentiles and computes cumulative percentiles.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MovingPercentilesAggregation"
                }
              ]
            },
            "moving_fn": {
              "description": "Given an ordered series of data, \"slides\" a window across the data and runs a custom script on each window of data.\nFor convenience, a number of common functions are predefined such as `min`, `max`, and moving averages.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MovingFunctionAggregation"
                }
              ]
            },
            "multi_terms": {
              "description": "A multi-bucket value source based aggregation where buckets are dynamically built - one per unique set of values.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MultiTermsAggregation"
                }
              ]
            },
            "nested": {
              "description": "A special single bucket aggregation that enables aggregating nested documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.NestedAggregation"
                }
              ]
            },
            "normalize": {
              "description": "A parent pipeline aggregation which calculates the specific normalized/rescaled value for a specific bucket value.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.NormalizeAggregation"
                }
              ]
            },
            "parent": {
              "description": "A special single bucket aggregation that selects parent documents that have the specified type, as defined in a `join` field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ParentAggregation"
                }
              ]
            },
            "percentile_ranks": {
              "description": "A multi-value metrics aggregation that calculates one or more percentile ranks over numeric values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.PercentileRanksAggregation"
                }
              ]
            },
            "percentiles": {
              "description": "A multi-value metrics aggregation that calculates one or more percentiles over numeric values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.PercentilesAggregation"
                }
              ]
            },
            "percentiles_bucket": {
              "description": "A sibling pipeline aggregation which calculates percentiles across all bucket of a specified metric in a sibling aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.PercentilesBucketAggregation"
                }
              ]
            },
            "range": {
              "description": "A multi-bucket value source based aggregation that enables the user to define a set of ranges - each representing a bucket.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.RangeAggregation"
                }
              ]
            },
            "rare_terms": {
              "description": "A multi-bucket value source based aggregation which finds \"rare\" terms — terms that are at the long-tail of the distribution and are not frequent.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.RareTermsAggregation"
                }
              ]
            },
            "rate": {
              "description": "Calculates a rate of documents or a field in each bucket.\nCan only be used inside a `date_histogram` or `composite` aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.RateAggregation"
                }
              ]
            },
            "reverse_nested": {
              "description": "A special single bucket aggregation that enables aggregating on parent documents from nested documents.\nShould only be defined inside a `nested` aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ReverseNestedAggregation"
                }
              ]
            },
            "random_sampler": {
              "description": "A single bucket aggregation that randomly includes documents in the aggregated results.\nSampling provides significant speed improvement at the cost of accuracy.",
              "x-state": "Technical preview; Added in 8.1.0",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.RandomSamplerAggregation"
                }
              ]
            },
            "sampler": {
              "description": "A filtering aggregation used to limit any sub aggregations' processing to a sample of the top-scoring documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.SamplerAggregation"
                }
              ]
            },
            "scripted_metric": {
              "description": "A metric aggregation that uses scripts to provide a metric output.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ScriptedMetricAggregation"
                }
              ]
            },
            "serial_diff": {
              "description": "An aggregation that subtracts values in a time series from themselves at different time lags or periods.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.SerialDifferencingAggregation"
                }
              ]
            },
            "significant_terms": {
              "description": "Returns interesting or unusual occurrences of terms in a set.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.SignificantTermsAggregation"
                }
              ]
            },
            "significant_text": {
              "description": "Returns interesting or unusual occurrences of free-text terms in a set.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.SignificantTextAggregation"
                }
              ]
            },
            "stats": {
              "description": "A multi-value metrics aggregation that computes stats over numeric values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.StatsAggregation"
                }
              ]
            },
            "stats_bucket": {
              "description": "A sibling pipeline aggregation which calculates a variety of stats across all bucket of a specified metric in a sibling aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.StatsBucketAggregation"
                }
              ]
            },
            "string_stats": {
              "description": "A multi-value metrics aggregation that computes statistics over string values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.StringStatsAggregation"
                }
              ]
            },
            "sum": {
              "description": "A single-value metrics aggregation that sums numeric values that are extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.SumAggregation"
                }
              ]
            },
            "sum_bucket": {
              "description": "A sibling pipeline aggregation which calculates the sum of a specified metric across all buckets in a sibling aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.SumBucketAggregation"
                }
              ]
            },
            "terms": {
              "description": "A multi-bucket value source based aggregation where buckets are dynamically built - one per unique value.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsAggregation"
                }
              ]
            },
            "time_series": {
              "description": "The time series aggregation queries data created using a time series index.\nThis is typically data such as metrics or other data streams with a time component, and requires creating an index using the time series mode.",
              "x-state": "Technical preview",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TimeSeriesAggregation"
                }
              ]
            },
            "top_hits": {
              "description": "A metric aggregation that returns the top matching documents per bucket.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TopHitsAggregation"
                }
              ]
            },
            "t_test": {
              "description": "A metrics aggregation that performs a statistical hypothesis test in which the test statistic follows a Student’s t-distribution under the null hypothesis on numeric values extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TTestAggregation"
                }
              ]
            },
            "top_metrics": {
              "description": "A metric aggregation that selects metrics from the document with the largest or smallest sort value.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TopMetricsAggregation"
                }
              ]
            },
            "value_count": {
              "description": "A single-value metrics aggregation that counts the number of values that are extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ValueCountAggregation"
                }
              ]
            },
            "weighted_avg": {
              "description": "A single-value metrics aggregation that computes the weighted average of numeric values that are extracted from the aggregated documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.WeightedAverageAggregation"
                }
              ]
            },
            "variable_width_histogram": {
              "description": "A multi-bucket aggregation similar to the histogram, except instead of providing an interval to use as the width of each bucket, a target number of buckets is provided.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.VariableWidthHistogramAggregation"
                }
              ]
            }
          },
          "minProperties": 1,
          "maxProperties": 1
        }
      ]
    },
    "_types.aggregations.AggregationRange": {
      "type": "object",
      "properties": {
        "from": {
          "description": "Start of the range (inclusive).",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": [
                "string",
                "null"
              ]
            }
          ]
        },
        "key": {
          "description": "Custom key to return the range with.",
          "type": "string"
        },
        "to": {
          "description": "End of the range (exclusive).",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": [
                "string",
                "null"
              ]
            }
          ]
        }
      }
    },
    "_types.aggregations.AutoDateHistogramAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "buckets": {
              "description": "The target number of buckets.",
              "default": 10.0,
              "type": "number"
            },
            "field": {
              "description": "The field on which to run the aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "format": {
              "description": "The date format used to format `key_as_string` in the response.\nIf no `format` is specified, the first date format specified in the field mapping is used.",
              "type": "string"
            },
            "minimum_interval": {
              "description": "The minimum rounding interval.\nThis can make the collection process more efficient, as the aggregation will not attempt to round at any interval lower than `minimum_interval`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MinimumInterval"
                }
              ]
            },
            "missing": {
              "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateTime"
                }
              ]
            },
            "offset": {
              "description": "Time zone specified as a ISO 8601 UTC offset.",
              "type": "string"
            },
            "params": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "time_zone": {
              "description": "Time zone ID.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TimeZone"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.AverageAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.AverageBucketAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.BoxplotAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "compression": {
              "description": "Limits the maximum number of nodes used by the underlying TDigest algorithm to `20 * compression`, enabling control of memory usage and approximation error.",
              "type": "number"
            },
            "execution_hint": {
              "description": "The default implementation of TDigest is optimized for performance, scaling to millions or even billions of sample values while maintaining acceptable accuracy levels (close to 1% relative error for millions of samples in some cases).\nTo use an implementation optimized for accuracy, set this parameter to high_accuracy instead.",
              "default": "default",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TDigestExecutionHint"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.BucketAggregationBase": {
      "description": "Base type for bucket aggregations. These aggregations also accept sub-aggregations.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.Aggregation"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.BucketCorrelationAggregation": {
      "description": "A sibling pipeline aggregation which executes a correlation function on the configured sibling multi-bucket aggregation.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketPathAggregation"
        },
        {
          "type": "object",
          "properties": {
            "function": {
              "description": "The correlation function to execute.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BucketCorrelationFunction"
                }
              ]
            }
          },
          "required": [
            "function"
          ]
        }
      ]
    },
    "_types.aggregations.BucketCorrelationFunction": {
      "type": "object",
      "properties": {
        "count_correlation": {
          "description": "The configuration to calculate a count correlation. This function is designed for determining the correlation of a term value and a given metric.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.BucketCorrelationFunctionCountCorrelation"
            }
          ]
        }
      },
      "required": [
        "count_correlation"
      ]
    },
    "_types.aggregations.BucketCorrelationFunctionCountCorrelation": {
      "type": "object",
      "properties": {
        "indicator": {
          "description": "The indicator with which to correlate the configured `bucket_path` values.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.BucketCorrelationFunctionCountCorrelationIndicator"
            }
          ]
        }
      },
      "required": [
        "indicator"
      ]
    },
    "_types.aggregations.BucketCorrelationFunctionCountCorrelationIndicator": {
      "type": "object",
      "properties": {
        "doc_count": {
          "description": "The total number of documents that initially created the expectations. It’s required to be greater\nthan or equal to the sum of all values in the buckets_path as this is the originating superset of data\nto which the term values are correlated.",
          "type": "number"
        },
        "expectations": {
          "description": "An array of numbers with which to correlate the configured `bucket_path` values.\nThe length of this value must always equal the number of buckets returned by the `bucket_path`.",
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "fractions": {
          "description": "An array of fractions to use when averaging and calculating variance. This should be used if\nthe pre-calculated data and the buckets_path have known gaps. The length of fractions, if provided,\nmust equal expectations.",
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "required": [
        "doc_count",
        "expectations"
      ]
    },
    "_types.aggregations.BucketKsAggregation": {
      "description": "A sibling pipeline aggregation which executes a two sample Kolmogorov–Smirnov test (referred\nto as a \"K-S test\" from now on) against a provided distribution, and the distribution implied\nby the documents counts in the configured sibling aggregation. Specifically, for some metric,\nassuming that the percentile intervals of the metric are known beforehand or have been computed\nby an aggregation, then one would use range aggregation for the sibling to compute the p-value\nof the distribution difference between the metric and the restriction of that metric to a subset\nof the documents. A natural use case is if the sibling aggregation range aggregation nested in a\nterms aggregation, in which case one compares the overall distribution of metric to its restriction\nto each term.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketPathAggregation"
        },
        {
          "type": "object",
          "properties": {
            "alternative": {
              "description": "A list of string values indicating which K-S test alternative to calculate. The valid values\nare: \"greater\", \"less\", \"two_sided\". This parameter is key for determining the K-S statistic used\nwhen calculating the K-S test. Default value is all possible alternative hypotheses.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "fractions": {
              "description": "A list of doubles indicating the distribution of the samples with which to compare to the `buckets_path` results.\nIn typical usage this is the overall proportion of documents in each bucket, which is compared with the actual\ndocument proportions in each bucket from the sibling aggregation counts. The default is to assume that overall\ndocuments are uniformly distributed on these buckets, which they would be if one used equal percentiles of a\nmetric to define the bucket end points.",
              "type": "array",
              "items": {
                "type": "number"
              }
            },
            "sampling_method": {
              "description": "Indicates the sampling methodology when calculating the K-S test. Note, this is sampling of the returned values.\nThis determines the cumulative distribution function (CDF) points used comparing the two samples. Default is\n`upper_tail`, which emphasizes the upper end of the CDF points. Valid options are: `upper_tail`, `uniform`,\nand `lower_tail`.",
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.aggregations.BucketPathAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.Aggregation"
        },
        {
          "type": "object",
          "properties": {
            "buckets_path": {
              "description": "Path to the buckets that contain one set of values to correlate.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BucketsPath"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.BucketScriptAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "script": {
              "description": "The script to run for this aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.BucketSelectorAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "script": {
              "description": "The script to run for this aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.BucketSortAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.Aggregation"
        },
        {
          "type": "object",
          "properties": {
            "from": {
              "description": "Buckets in positions prior to `from` will be truncated.",
              "type": "number"
            },
            "gap_policy": {
              "description": "The policy to apply when gaps are found in the data.\n\nSupported values include:\n  - `skip`: Treats missing data as if the bucket does not exist. It will skip the bucket and\ncontinue calculating using the next available value.\n  - `insert_zeros`: Replace missing values with a zero (0) and pipeline aggregation computation will proceed as normal.\n  - `keep_values`: Similar to skip, except if the metric provides a non-null, non-NaN value this value is used,\notherwise the empty bucket is skipped.\n\n",
              "default": "skip",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GapPolicy"
                }
              ]
            },
            "size": {
              "description": "The number of buckets to return.\nDefaults to all buckets of the parent aggregation.",
              "type": "number"
            },
            "sort": {
              "description": "The list of fields to sort on.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Sort"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.BucketsPath": {
      "description": "Buckets path can be expressed in different ways, and an aggregation may accept some or all of these\nforms depending on its type. Please refer to each aggregation's documentation to know what buckets\npath forms they accept.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      ]
    },
    "_types.aggregations.BucketsQueryContainer": {
      "description": "Aggregation buckets. By default they are returned as an array, but if the aggregation has keys configured for\nthe different buckets, the result is a dictionary.",
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.QueryContainer"
          }
        },
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.query_dsl.QueryContainer"
          }
        }
      ]
    },
    "_types.aggregations.CalendarInterval": {
      "type": "string",
      "enum": [
        "second",
        "1s",
        "minute",
        "1m",
        "hour",
        "1h",
        "day",
        "1d",
        "week",
        "1w",
        "month",
        "1M",
        "quarter",
        "1q",
        "year",
        "1y"
      ]
    },
    "_types.aggregations.CardinalityAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "precision_threshold": {
              "description": "A unique count below which counts are expected to be close to accurate.\nThis allows to trade memory for accuracy.",
              "default": 3000.0,
              "type": "number"
            },
            "rehash": {
              "type": "boolean"
            },
            "execution_hint": {
              "description": "Mechanism by which cardinality aggregations is run.\n\nSupported values include:\n  - `global_ordinals`: Run the aggregation by using global ordinals of the field and resolving those values after finishing a shard.\n  - `segment_ordinals`: Run the aggregation by using segment ordinal values and resolving those values after each segment.\n  - `direct`: Run the aggregation by using field values directly.\n  - `save_memory_heuristic`: Heuristic-based mode, default in Elasticsearch 8.3 and earlier.\n  - `save_time_heuristic`: Heuristic-based mode, default in Elasticsearch 8.4 and later.\n\n",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CardinalityExecutionMode"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.CardinalityExecutionMode": {
      "type": "string",
      "enum": [
        "global_ordinals",
        "segment_ordinals",
        "direct",
        "save_memory_heuristic",
        "save_time_heuristic"
      ]
    },
    "_types.aggregations.CartesianBoundsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.CartesianCentroidAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.CategorizeTextAggregation": {
      "description": "A multi-bucket aggregation that groups semi-structured text into buckets. Each text\nfield is re-analyzed using a custom analyzer. The resulting tokens are then categorized\ncreating buckets of similarly formatted text values. This aggregation works best with machine\ngenerated text like system logs. Only the first 100 analyzed tokens are used to categorize the text.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.Aggregation"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The semi-structured text field to categorize.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "max_unique_tokens": {
              "description": "The maximum number of unique tokens at any position up to max_matched_tokens. Must be larger than 1.\nSmaller values use less memory and create fewer categories. Larger values will use more memory and\ncreate narrower categories. Max allowed value is 100.",
              "default": 50.0,
              "type": "number"
            },
            "max_matched_tokens": {
              "description": "The maximum number of token positions to match on before attempting to merge categories. Larger\nvalues will use more memory and create narrower categories. Max allowed value is 100.",
              "default": 5.0,
              "type": "number"
            },
            "similarity_threshold": {
              "description": "The minimum percentage of tokens that must match for text to be added to the category bucket. Must\nbe between 1 and 100. The larger the value the narrower the categories. Larger values will increase memory\nusage and create narrower categories.",
              "default": 50.0,
              "type": "number"
            },
            "categorization_filters": {
              "description": "This property expects an array of regular expressions. The expressions are used to filter out matching\nsequences from the categorization field values. You can use this functionality to fine tune the categorization\nby excluding sequences from consideration when categories are defined. For example, you can exclude SQL\nstatements that appear in your log files. This property cannot be used at the same time as categorization_analyzer.\nIf you only want to define simple regular expression filters that are applied prior to tokenization, setting\nthis property is the easiest method. If you also want to customize the tokenizer or post-tokenization filtering,\nuse the categorization_analyzer property instead and include the filters as pattern_replace character filters.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "categorization_analyzer": {
              "description": "The categorization analyzer specifies how the text is analyzed and tokenized before being categorized.\nThe syntax is very similar to that used to define the analyzer in the analyze API. This property\ncannot be used at the same time as `categorization_filters`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CategorizeTextAnalyzer"
                }
              ]
            },
            "shard_size": {
              "description": "The number of categorization buckets to return from each shard before merging all the results.",
              "type": "number"
            },
            "size": {
              "description": "The number of buckets to return.",
              "default": 10.0,
              "type": "number"
            },
            "min_doc_count": {
              "description": "The minimum number of documents in a bucket to be returned to the results.",
              "type": "number"
            },
            "shard_min_doc_count": {
              "description": "The minimum number of documents in a bucket to be returned from the shard before merging.",
              "type": "number"
            }
          },
          "required": [
            "field"
          ]
        }
      ]
    },
    "_types.aggregations.CategorizeTextAnalyzer": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/_types.aggregations.CustomCategorizeTextAnalyzer"
        }
      ]
    },
    "_types.aggregations.ChangePointAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.ChiSquareHeuristic": {
      "type": "object",
      "properties": {
        "background_is_superset": {
          "description": "Set to `false` if you defined a custom background filter that represents a different set of documents that you want to compare to.",
          "type": "boolean"
        },
        "include_negatives": {
          "description": "Set to `false` to filter out the terms that appear less often in the subset than in documents outside the subset.",
          "type": "boolean"
        }
      },
      "required": [
        "background_is_superset",
        "include_negatives"
      ]
    },
    "_types.aggregations.ChildrenAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "description": "The child type that should be selected.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RelationName"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.CompositeAggregateKey": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/_types.FieldValue"
      }
    },
    "_types.aggregations.CompositeAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "after": {
              "description": "When paginating, use the `after_key` value returned in the previous response to retrieve the next page.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CompositeAggregateKey"
                }
              ]
            },
            "size": {
              "description": "The number of composite buckets that should be returned.",
              "default": 10.0,
              "type": "number"
            },
            "sources": {
              "description": "The value sources used to build composite buckets.\nKeys are returned in the order of the `sources` definition.",
              "type": "array",
              "items": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/$defs/_types.aggregations.CompositeAggregationSource"
                },
                "minProperties": 1,
                "maxProperties": 1
              }
            }
          }
        }
      ]
    },
    "_types.aggregations.CompositeAggregationBase": {
      "type": "object",
      "properties": {
        "field": {
          "description": "Either `field` or `script` must be present",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "missing_bucket": {
          "type": "boolean"
        },
        "missing_order": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.MissingOrder"
            }
          ]
        },
        "script": {
          "description": "Either `field` or `script` must be present",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        },
        "value_type": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.ValueType"
            }
          ]
        },
        "order": {
          "description": "\n\nSupported values include:\n  - `asc`: Ascending (smallest to largest)\n  - `desc`: Descending (largest to smallest)\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.SortOrder"
            }
          ]
        }
      }
    },
    "_types.aggregations.CompositeAggregationSource": {
      "type": "object",
      "properties": {
        "terms": {
          "description": "A terms aggregation.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.CompositeTermsAggregation"
            }
          ]
        },
        "histogram": {
          "description": "A histogram aggregation.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.CompositeHistogramAggregation"
            }
          ]
        },
        "date_histogram": {
          "description": "A date histogram aggregation.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.CompositeDateHistogramAggregation"
            }
          ]
        },
        "geotile_grid": {
          "description": "A geotile grid aggregation.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.CompositeGeoTileGridAggregation"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.aggregations.CompositeDateHistogramAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.CompositeAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "format": {
              "type": "string"
            },
            "calendar_interval": {
              "description": "Either `calendar_interval` or `fixed_interval` must be present",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DurationLarge"
                }
              ]
            },
            "fixed_interval": {
              "description": "Either `calendar_interval` or `fixed_interval` must be present",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DurationLarge"
                }
              ]
            },
            "offset": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Duration"
                }
              ]
            },
            "time_zone": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TimeZone"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.CompositeGeoTileGridAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.CompositeAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "precision": {
              "type": "number"
            },
            "bounds": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoBounds"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.CompositeHistogramAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.CompositeAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "interval": {
              "type": "number"
            }
          },
          "required": [
            "interval"
          ]
        }
      ]
    },
    "_types.aggregations.CompositeTermsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.CompositeAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.CumulativeCardinalityAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.CumulativeSumAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.CustomCategorizeTextAnalyzer": {
      "type": "object",
      "properties": {
        "char_filter": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tokenizer": {
          "type": "string"
        },
        "filter": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "_types.aggregations.DateHistogramAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "calendar_interval": {
              "description": "Calendar-aware interval.\nCan be specified using the unit name, such as `month`, or as a single unit quantity, such as `1M`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CalendarInterval"
                }
              ]
            },
            "extended_bounds": {
              "description": "Enables extending the bounds of the histogram beyond the data itself.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ExtendedBoundsFieldDateMath"
                }
              ]
            },
            "hard_bounds": {
              "description": "Limits the histogram to specified bounds.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ExtendedBoundsFieldDateMath"
                }
              ]
            },
            "field": {
              "description": "The date field whose values are use to build a histogram.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "fixed_interval": {
              "description": "Fixed intervals: a fixed number of SI units and never deviate, regardless of where they fall on the calendar.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Duration"
                }
              ]
            },
            "format": {
              "description": "The date format used to format `key_as_string` in the response.\nIf no `format` is specified, the first date format specified in the field mapping is used.",
              "type": "string"
            },
            "interval": {
              "deprecated": true,
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Duration"
                }
              ]
            },
            "min_doc_count": {
              "description": "Only returns buckets that have `min_doc_count` number of documents.\nBy default, all buckets between the first bucket that matches documents and the last one are returned.",
              "type": "number"
            },
            "missing": {
              "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateTime"
                }
              ]
            },
            "offset": {
              "description": "Changes the start value of each bucket by the specified positive (`+`) or negative offset (`-`) duration.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Duration"
                }
              ]
            },
            "order": {
              "description": "The sort order of the returned buckets.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.AggregateOrder"
                }
              ]
            },
            "params": {
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "time_zone": {
              "description": "Time zone used for bucketing and rounding.\nDefaults to Coordinated Universal Time (UTC).",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TimeZone"
                }
              ]
            },
            "keyed": {
              "description": "Set to `true` to associate a unique string key with each bucket and return the ranges as a hash rather than an array.",
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.DateRangeAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The date field whose values are use to build ranges.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "format": {
              "description": "The date format used to format `from` and `to` in the response.",
              "type": "string"
            },
            "missing": {
              "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.Missing"
                }
              ]
            },
            "ranges": {
              "description": "Array of date ranges.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.aggregations.DateRangeExpression"
              }
            },
            "time_zone": {
              "description": "Time zone used to convert dates from another time zone to UTC.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TimeZone"
                }
              ]
            },
            "keyed": {
              "description": "Set to `true` to associate a unique string key with each bucket and returns the ranges as a hash rather than an array.",
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.DateRangeExpression": {
      "type": "object",
      "properties": {
        "from": {
          "description": "Start of the range (inclusive).",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.FieldDateMath"
            }
          ]
        },
        "key": {
          "description": "Custom key to return the range with.",
          "type": "string"
        },
        "to": {
          "description": "End of the range (exclusive).",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.FieldDateMath"
            }
          ]
        }
      }
    },
    "_types.aggregations.DerivativeAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.DiversifiedSamplerAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "execution_hint": {
              "description": "The type of value used for de-duplication.\n\nSupported values include:\n  - `map`: Hold field values directly.\n  - `global_ordinals`: Hold ordinals of the field as determined by the Lucene index.\n  - `bytes_hash`: Hold hashes of the field values - with potential for hash collisions.\n\n",
              "default": "global_ordinals",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.SamplerAggregationExecutionHint"
                }
              ]
            },
            "max_docs_per_value": {
              "description": "Limits how many documents are permitted per choice of de-duplicating value.",
              "default": 1.0,
              "type": "number"
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "shard_size": {
              "description": "Limits how many top-scoring documents are collected in the sample processed on each shard.",
              "default": 100.0,
              "type": "number"
            },
            "field": {
              "description": "The field used to provide values used for de-duplication.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.EwmaModelSettings": {
      "type": "object",
      "properties": {
        "alpha": {
          "type": "number"
        }
      }
    },
    "_types.aggregations.EwmaMovingAverageAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MovingAverageAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "model": {
              "type": "string",
              "enum": [
                "ewma"
              ]
            },
            "settings": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.EwmaModelSettings"
                }
              ]
            }
          },
          "required": [
            "model",
            "settings"
          ]
        }
      ]
    },
    "_types.aggregations.ExtendedBoundsFieldDateMath": {
      "type": "object",
      "properties": {
        "max": {
          "description": "Maximum value for the bound.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.FieldDateMath"
            }
          ]
        },
        "min": {
          "description": "Minimum value for the bound.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.FieldDateMath"
            }
          ]
        }
      }
    },
    "_types.aggregations.ExtendedBoundsdouble": {
      "type": "object",
      "properties": {
        "max": {
          "description": "Maximum value for the bound.",
          "type": "number"
        },
        "min": {
          "description": "Minimum value for the bound.",
          "type": "number"
        }
      }
    },
    "_types.aggregations.ExtendedStatsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "sigma": {
              "description": "The number of standard deviations above/below the mean to display.",
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.aggregations.ExtendedStatsBucketAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "sigma": {
              "description": "The number of standard deviations above/below the mean to display.",
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.aggregations.FieldDateMath": {
      "description": "A date range limit, represented either as a DateMath expression or a number expressed\naccording to the target field's precision.",
      "oneOf": [
        {
          "$ref": "#/$defs/_types.DateMath"
        },
        {
          "type": "number"
        }
      ]
    },
    "_types.aggregations.FiltersAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "filters": {
              "description": "Collection of queries from which to build buckets.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.BucketsQueryContainer"
                }
              ]
            },
            "other_bucket": {
              "description": "Set to `true` to add a bucket to the response which will contain all documents that do not match any of the given filters.",
              "type": "boolean"
            },
            "other_bucket_key": {
              "description": "The key with which the other bucket is returned.",
              "default": "_other_",
              "type": "string"
            },
            "keyed": {
              "description": "By default, the named filters aggregation returns the buckets as an object.\nSet to `false` to return the buckets as an array of objects.",
              "default": true,
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.FormatMetricAggregationBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "format": {
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.aggregations.FormattableMetricAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "format": {
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.aggregations.FrequentItemSetsAggregation": {
      "type": "object",
      "properties": {
        "fields": {
          "description": "Fields to analyze.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.aggregations.FrequentItemSetsField"
          }
        },
        "minimum_set_size": {
          "description": "The minimum size of one item set.",
          "default": 1.0,
          "type": "number"
        },
        "minimum_support": {
          "description": "The minimum support of one item set.",
          "default": 0.1,
          "type": "number"
        },
        "size": {
          "description": "The number of top item sets to return.",
          "default": 10.0,
          "type": "number"
        },
        "filter": {
          "description": "Query that filters documents from analysis.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            }
          ]
        }
      },
      "required": [
        "fields"
      ]
    },
    "_types.aggregations.FrequentItemSetsField": {
      "type": "object",
      "properties": {
        "field": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "exclude": {
          "description": "Values to exclude.\nCan be regular expression strings or arrays of strings of exact terms.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.TermsExclude"
            }
          ]
        },
        "include": {
          "description": "Values to include.\nCan be regular expression strings or arrays of strings of exact terms.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.TermsInclude"
            }
          ]
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.aggregations.GapPolicy": {
      "type": "string",
      "enum": [
        "skip",
        "insert_zeros",
        "keep_values"
      ]
    },
    "_types.aggregations.GeoBoundsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "wrap_longitude": {
              "description": "Specifies whether the bounding box should be allowed to overlap the international date line.",
              "default": true,
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.GeoCentroidAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "count": {
              "type": "number"
            },
            "location": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoLocation"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.GeoDistanceAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "distance_type": {
              "description": "The distance calculation type.\n\nSupported values include:\n  - `arc`: The `arc` calculation is the most accurate.\n  - `plane`: The `plane` calculation is faster but less accurate.\n\n",
              "default": "arc",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoDistanceType"
                }
              ]
            },
            "field": {
              "description": "A field of type `geo_point` used to evaluate the distance.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "origin": {
              "description": "The origin  used to evaluate the distance.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoLocation"
                }
              ]
            },
            "ranges": {
              "description": "An array of ranges used to bucket documents.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.aggregations.AggregationRange"
              }
            },
            "unit": {
              "description": "The distance unit.",
              "default": "m",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DistanceUnit"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.GeoHashGridAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "bounds": {
              "description": "The bounding box to filter the points in each bucket.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoBounds"
                }
              ]
            },
            "field": {
              "description": "Field containing indexed `geo_point` or `geo_shape` values.\nIf the field contains an array, `geohash_grid` aggregates all array values.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "precision": {
              "description": "The string length of the geohashes used to define cells/buckets in the results.",
              "default": "5",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoHashPrecision"
                }
              ]
            },
            "shard_size": {
              "description": "Allows for more accurate counting of the top cells returned in the final result the aggregation.\nDefaults to returning `max(10,(size x number-of-shards))` buckets from each shard.",
              "type": "number"
            },
            "size": {
              "description": "The maximum number of geohash buckets to return.",
              "default": 10000.0,
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.aggregations.GeoLineAggregation": {
      "type": "object",
      "properties": {
        "point": {
          "description": "The name of the geo_point field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.GeoLinePoint"
            }
          ]
        },
        "sort": {
          "description": "The name of the numeric field to use as the sort key for ordering the points.\nWhen the `geo_line` aggregation is nested inside a `time_series` aggregation, this field defaults to `@timestamp`, and any other value will result in error.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.GeoLineSort"
            }
          ]
        },
        "include_sort": {
          "description": "When `true`, returns an additional array of the sort values in the feature properties.",
          "type": "boolean"
        },
        "sort_order": {
          "description": "The order in which the line is sorted (ascending or descending).\n\nSupported values include:\n  - `asc`: Ascending (smallest to largest)\n  - `desc`: Descending (largest to smallest)\n\n",
          "default": "asc",
          "allOf": [
            {
              "$ref": "#/$defs/_types.SortOrder"
            }
          ]
        },
        "size": {
          "description": "The maximum length of the line represented in the aggregation.\nValid sizes are between 1 and 10000.",
          "default": 10000.0,
          "type": "number"
        }
      },
      "required": [
        "point"
      ]
    },
    "_types.aggregations.GeoLinePoint": {
      "type": "object",
      "properties": {
        "field": {
          "description": "The name of the geo_point field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.aggregations.GeoLineSort": {
      "type": "object",
      "properties": {
        "field": {
          "description": "The name of the numeric field to use as the sort key for ordering the points.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.aggregations.GeoTileGridAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "Field containing indexed `geo_point` or `geo_shape` values.\nIf the field contains an array, `geotile_grid` aggregates all array values.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "precision": {
              "description": "Integer zoom of the key used to define cells/buckets in the results.\nValues outside of the range [0,29] will be rejected.",
              "default": "7",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoTilePrecision"
                }
              ]
            },
            "shard_size": {
              "description": "Allows for more accurate counting of the top cells returned in the final result the aggregation.\nDefaults to returning `max(10,(size x number-of-shards))` buckets from each shard.",
              "type": "number"
            },
            "size": {
              "description": "The maximum number of buckets to return.",
              "default": 10000.0,
              "type": "number"
            },
            "bounds": {
              "description": "A bounding box to filter the geo-points or geo-shapes in each bucket.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoBounds"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.GeohexGridAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "Field containing indexed `geo_point` or `geo_shape` values.\nIf the field contains an array, `geohex_grid` aggregates all array values.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "precision": {
              "description": "Integer zoom of the key used to defined cells or buckets\nin the results. Value should be between 0-15.",
              "default": 6.0,
              "type": "number"
            },
            "bounds": {
              "description": "Bounding box used to filter the geo-points in each bucket.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoBounds"
                }
              ]
            },
            "size": {
              "description": "Maximum number of buckets to return.",
              "default": 10000.0,
              "type": "number"
            },
            "shard_size": {
              "description": "Number of buckets returned from each shard.",
              "type": "number"
            }
          },
          "required": [
            "field"
          ]
        }
      ]
    },
    "_types.aggregations.GlobalAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.GoogleNormalizedDistanceHeuristic": {
      "type": "object",
      "properties": {
        "background_is_superset": {
          "description": "Set to `false` if you defined a custom background filter that represents a different set of documents that you want to compare to.",
          "type": "boolean"
        }
      }
    },
    "_types.aggregations.HdrMethod": {
      "type": "object",
      "properties": {
        "number_of_significant_value_digits": {
          "description": "Specifies the resolution of values for the histogram in number of significant digits.",
          "type": "number"
        }
      }
    },
    "_types.aggregations.HistogramAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "extended_bounds": {
              "description": "Enables extending the bounds of the histogram beyond the data itself.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ExtendedBoundsdouble"
                }
              ]
            },
            "hard_bounds": {
              "description": "Limits the range of buckets in the histogram.\nIt is particularly useful in the case of open data ranges that can result in a very large number of buckets.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ExtendedBoundsdouble"
                }
              ]
            },
            "field": {
              "description": "The name of the field to aggregate on.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "interval": {
              "description": "The interval for the buckets.\nMust be a positive decimal.",
              "type": "number"
            },
            "min_doc_count": {
              "description": "Only returns buckets that have `min_doc_count` number of documents.\nBy default, the response will fill gaps in the histogram with empty buckets.",
              "type": "number"
            },
            "missing": {
              "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
              "type": "number"
            },
            "offset": {
              "description": "By default, the bucket keys start with 0 and then continue in even spaced steps of `interval`.\nThe bucket boundaries can be shifted by using the `offset` option.",
              "type": "number"
            },
            "order": {
              "description": "The sort order of the returned buckets.\nBy default, the returned buckets are sorted by their key ascending.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.AggregateOrder"
                }
              ]
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "format": {
              "type": "string"
            },
            "keyed": {
              "description": "If `true`, returns buckets as a hash instead of an array, keyed by the bucket keys.",
              "default": false,
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.HoltLinearModelSettings": {
      "type": "object",
      "properties": {
        "alpha": {
          "type": "number"
        },
        "beta": {
          "type": "number"
        }
      }
    },
    "_types.aggregations.HoltMovingAverageAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MovingAverageAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "model": {
              "type": "string",
              "enum": [
                "holt"
              ]
            },
            "settings": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.HoltLinearModelSettings"
                }
              ]
            }
          },
          "required": [
            "model",
            "settings"
          ]
        }
      ]
    },
    "_types.aggregations.HoltWintersModelSettings": {
      "type": "object",
      "properties": {
        "alpha": {
          "type": "number"
        },
        "beta": {
          "type": "number"
        },
        "gamma": {
          "type": "number"
        },
        "pad": {
          "type": "boolean"
        },
        "period": {
          "type": "number"
        },
        "type": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.HoltWintersType"
            }
          ]
        }
      }
    },
    "_types.aggregations.HoltWintersMovingAverageAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MovingAverageAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "model": {
              "type": "string",
              "enum": [
                "holt_winters"
              ]
            },
            "settings": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.HoltWintersModelSettings"
                }
              ]
            }
          },
          "required": [
            "model",
            "settings"
          ]
        }
      ]
    },
    "_types.aggregations.HoltWintersType": {
      "type": "string",
      "enum": [
        "add",
        "mult"
      ]
    },
    "_types.aggregations.InferenceAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "model_id": {
              "description": "The ID or alias for the trained model.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Name"
                }
              ]
            },
            "inference_config": {
              "description": "Contains the inference type and its options.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.InferenceConfigContainer"
                }
              ]
            }
          },
          "required": [
            "model_id"
          ]
        }
      ]
    },
    "_types.aggregations.InferenceConfigContainer": {
      "type": "object",
      "properties": {
        "regression": {
          "description": "Regression configuration for inference.",
          "allOf": [
            {
              "$ref": "#/$defs/ml._types.RegressionInferenceOptions"
            }
          ]
        },
        "classification": {
          "description": "Classification configuration for inference.",
          "allOf": [
            {
              "$ref": "#/$defs/ml._types.ClassificationInferenceOptions"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.aggregations.IpPrefixAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The IP address field to aggregation on. The field mapping type must be `ip`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "prefix_length": {
              "description": "Length of the network prefix. For IPv4 addresses the accepted range is [0, 32].\nFor IPv6 addresses the accepted range is [0, 128].",
              "type": "number"
            },
            "is_ipv6": {
              "description": "Defines whether the prefix applies to IPv6 addresses.",
              "default": false,
              "type": "boolean"
            },
            "append_prefix_length": {
              "description": "Defines whether the prefix length is appended to IP address keys in the response.",
              "default": false,
              "type": "boolean"
            },
            "keyed": {
              "description": "Defines whether buckets are returned as a hash rather than an array in the response.",
              "type": "boolean"
            },
            "min_doc_count": {
              "description": "Minimum number of documents in a bucket for it to be included in the response.",
              "default": 1.0,
              "type": "number"
            }
          },
          "required": [
            "field",
            "prefix_length"
          ]
        }
      ]
    },
    "_types.aggregations.IpRangeAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The date field whose values are used to build ranges.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "ranges": {
              "description": "Array of IP ranges.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.aggregations.IpRangeAggregationRange"
              }
            }
          }
        }
      ]
    },
    "_types.aggregations.IpRangeAggregationRange": {
      "type": "object",
      "properties": {
        "from": {
          "description": "Start of the range.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": [
                "string",
                "null"
              ]
            }
          ]
        },
        "mask": {
          "description": "IP range defined as a CIDR mask.",
          "type": "string"
        },
        "to": {
          "description": "End of the range.",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": [
                "string",
                "null"
              ]
            }
          ]
        }
      }
    },
    "_types.aggregations.LinearMovingAverageAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MovingAverageAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "model": {
              "type": "string",
              "enum": [
                "linear"
              ]
            },
            "settings": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.EmptyObject"
                }
              ]
            }
          },
          "required": [
            "model",
            "settings"
          ]
        }
      ]
    },
    "_types.aggregations.MatrixAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.Aggregation"
        },
        {
          "type": "object",
          "properties": {
            "fields": {
              "description": "An array of fields for computing the statistics.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fields"
                }
              ]
            },
            "missing": {
              "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
              "type": "object",
              "additionalProperties": {
                "type": "number"
              }
            }
          }
        }
      ]
    },
    "_types.aggregations.MatrixStatsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MatrixAggregation"
        },
        {
          "type": "object",
          "properties": {
            "mode": {
              "description": "Array value the aggregation will use for array or multi-valued fields.",
              "default": "avg",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.SortMode"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.MaxAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.MaxBucketAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.MedianAbsoluteDeviationAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "compression": {
              "description": "Limits the maximum number of nodes used by the underlying TDigest algorithm to `20 * compression`, enabling control of memory usage and approximation error.",
              "default": 1000.0,
              "type": "number"
            },
            "execution_hint": {
              "description": "The default implementation of TDigest is optimized for performance, scaling to millions or even billions of sample values while maintaining acceptable accuracy levels (close to 1% relative error for millions of samples in some cases).\nTo use an implementation optimized for accuracy, set this parameter to high_accuracy instead.",
              "default": "default",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TDigestExecutionHint"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.MetricAggregationBase": {
      "type": "object",
      "properties": {
        "field": {
          "description": "The field on which to run the aggregation.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "missing": {
          "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.Missing"
            }
          ]
        },
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        }
      }
    },
    "_types.aggregations.MinAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.MinBucketAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.MinimumInterval": {
      "type": "string",
      "enum": [
        "second",
        "minute",
        "hour",
        "day",
        "month",
        "year"
      ]
    },
    "_types.aggregations.Missing": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        },
        {
          "type": "number"
        },
        {
          "type": "boolean"
        }
      ]
    },
    "_types.aggregations.MissingAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The name of the field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "missing": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.Missing"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.MissingOrder": {
      "type": "string",
      "enum": [
        "first",
        "last",
        "default"
      ]
    },
    "_types.aggregations.MovingAverageAggregation": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.aggregations.LinearMovingAverageAggregation"
        },
        {
          "$ref": "#/$defs/_types.aggregations.SimpleMovingAverageAggregation"
        },
        {
          "$ref": "#/$defs/_types.aggregations.EwmaMovingAverageAggregation"
        },
        {
          "$ref": "#/$defs/_types.aggregations.HoltMovingAverageAggregation"
        },
        {
          "$ref": "#/$defs/_types.aggregations.HoltWintersMovingAverageAggregation"
        }
      ]
    },
    "_types.aggregations.MovingAverageAggregationBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "minimize": {
              "type": "boolean"
            },
            "predict": {
              "type": "number"
            },
            "window": {
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.aggregations.MovingFunctionAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "script": {
              "description": "The script that should be executed on each window of data.",
              "type": "string"
            },
            "shift": {
              "description": "By default, the window consists of the last n values excluding the current bucket.\nIncreasing `shift` by 1, moves the starting window position by 1 to the right.",
              "default": 0.0,
              "type": "number"
            },
            "window": {
              "description": "The size of window to \"slide\" across the histogram.",
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.aggregations.MovingPercentilesAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "window": {
              "description": "The size of window to \"slide\" across the histogram.",
              "type": "number"
            },
            "shift": {
              "description": "By default, the window consists of the last n values excluding the current bucket.\nIncreasing `shift` by 1, moves the starting window position by 1 to the right.",
              "default": 0.0,
              "type": "number"
            },
            "keyed": {
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.MultiTermLookup": {
      "type": "object",
      "properties": {
        "field": {
          "description": "A fields from which to retrieve terms.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "missing": {
          "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.Missing"
            }
          ]
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.aggregations.MultiTermsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "collect_mode": {
              "description": "Specifies the strategy for data collection.\n\nSupported values include:\n  - `depth_first`: Expands all branches of the aggregation tree in one depth-first pass, before any pruning occurs.\n  - `breadth_first`: Caches the set of documents that fall into the uppermost buckets for subsequent replay.\n\n",
              "default": "breadth_first",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsAggregationCollectMode"
                }
              ]
            },
            "order": {
              "description": "Specifies the sort order of the buckets.\nDefaults to sorting by descending document count.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.AggregateOrder"
                }
              ]
            },
            "min_doc_count": {
              "description": "The minimum number of documents in a bucket for it to be returned.",
              "default": 1.0,
              "type": "number"
            },
            "shard_min_doc_count": {
              "description": "The minimum number of documents in a bucket on each shard for it to be returned.",
              "default": 1.0,
              "type": "number"
            },
            "shard_size": {
              "description": "The number of candidate terms produced by each shard.\nBy default, `shard_size` will be automatically estimated based on the number of shards and the `size` parameter.",
              "type": "number"
            },
            "show_term_doc_count_error": {
              "description": "Calculates the doc count error on per term basis.",
              "default": false,
              "type": "boolean"
            },
            "size": {
              "description": "The number of term buckets should be returned out of the overall terms list.",
              "default": 10.0,
              "type": "number"
            },
            "terms": {
              "description": "The field from which to generate sets of terms.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.aggregations.MultiTermLookup"
              }
            }
          },
          "required": [
            "terms"
          ]
        }
      ]
    },
    "_types.aggregations.MutualInformationHeuristic": {
      "type": "object",
      "properties": {
        "background_is_superset": {
          "description": "Set to `false` if you defined a custom background filter that represents a different set of documents that you want to compare to.",
          "type": "boolean"
        },
        "include_negatives": {
          "description": "Set to `false` to filter out the terms that appear less often in the subset than in documents outside the subset.",
          "type": "boolean"
        }
      }
    },
    "_types.aggregations.NestedAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "description": "The path to the field of type `nested`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.NormalizeAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "description": "The specific method to apply.\n\nSupported values include:\n  - `rescale_0_1`: This method rescales the data such that the minimum number is 0, and the maximum number is 1, with the rest normalized linearly in-between.\n  - `rescale_0_100`: This method rescales the data such that the minimum number is 0, and the maximum number is 100, with the rest normalized linearly in-between.\n  - `percent_of_sum`: This method normalizes each value so that it represents a percentage of the total sum it attributes to.\n  - `mean`: This method normalizes such that each value is normalized by how much it differs from the average.\n  - `z-score`: This method normalizes such that each value represents how far it is from the mean relative to the standard deviation.\n  - `softmax`: This method normalizes such that each value is exponentiated and relative to the sum of the exponents of the original values.\n\n",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.NormalizeMethod"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.NormalizeMethod": {
      "type": "string",
      "enum": [
        "rescale_0_1",
        "rescale_0_100",
        "percent_of_sum",
        "mean",
        "z-score",
        "softmax"
      ]
    },
    "_types.aggregations.PValueHeuristic": {
      "type": "object",
      "properties": {
        "background_is_superset": {
          "type": "boolean"
        },
        "normalize_above": {
          "description": "Should the results be normalized when above the given value.\nAllows for consistent significance results at various scales.\nNote: `0` is a special value which means no normalization",
          "default": 0.0,
          "type": "number"
        }
      }
    },
    "_types.aggregations.ParentAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "description": "The child type that should be selected.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RelationName"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.PercentageScoreHeuristic": {
      "type": "object"
    },
    "_types.aggregations.PercentileRanksAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "keyed": {
              "description": "By default, the aggregation associates a unique string key with each bucket and returns the ranges as a hash rather than an array.\nSet to `false` to disable this behavior.",
              "default": true,
              "type": "boolean"
            },
            "values": {
              "description": "An array of values for which to calculate the percentile ranks.",
              "oneOf": [
                {
                  "type": "array",
                  "items": {
                    "type": "number"
                  }
                },
                {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              ]
            },
            "hdr": {
              "description": "Uses the alternative High Dynamic Range Histogram algorithm to calculate percentile ranks.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.HdrMethod"
                }
              ]
            },
            "tdigest": {
              "description": "Sets parameters for the default TDigest algorithm used to calculate percentile ranks.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TDigest"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.PercentilesAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "keyed": {
              "description": "By default, the aggregation associates a unique string key with each bucket and returns the ranges as a hash rather than an array.\nSet to `false` to disable this behavior.",
              "default": true,
              "type": "boolean"
            },
            "percents": {
              "description": "The percentiles to calculate.",
              "oneOf": [
                {
                  "type": "number"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "number"
                  }
                }
              ]
            },
            "hdr": {
              "description": "Uses the alternative High Dynamic Range Histogram algorithm to calculate percentiles.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.HdrMethod"
                }
              ]
            },
            "tdigest": {
              "description": "Sets parameters for the default TDigest algorithm used to calculate percentiles.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TDigest"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.PercentilesBucketAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "percents": {
              "description": "The list of percentiles to calculate.",
              "type": "array",
              "items": {
                "type": "number"
              }
            }
          }
        }
      ]
    },
    "_types.aggregations.PipelineAggregationBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketPathAggregation"
        },
        {
          "type": "object",
          "properties": {
            "format": {
              "description": "`DecimalFormat` pattern for the output value.\nIf specified, the formatted value is returned in the aggregation’s `value_as_string` property.",
              "type": "string"
            },
            "gap_policy": {
              "description": "Policy to apply when gaps are found in the data.\n\nSupported values include:\n  - `skip`: Treats missing data as if the bucket does not exist. It will skip the bucket and\ncontinue calculating using the next available value.\n  - `insert_zeros`: Replace missing values with a zero (0) and pipeline aggregation computation will proceed as normal.\n  - `keep_values`: Similar to skip, except if the metric provides a non-null, non-NaN value this value is used,\notherwise the empty bucket is skipped.\n\n",
              "default": "skip",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GapPolicy"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.RandomSamplerAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "probability": {
              "description": "The probability that a document will be included in the aggregated data.\nMust be greater than 0, less than 0.5, or exactly 1.\nThe lower the probability, the fewer documents are matched.",
              "type": "number"
            },
            "seed": {
              "description": "The seed to generate the random sampling of documents.\nWhen a seed is provided, the random subset of documents is the same between calls.",
              "type": "number"
            },
            "shard_seed": {
              "description": "When combined with seed, setting shard_seed ensures 100% consistent sampling over shards where data is exactly the same.",
              "x-state": "Generally available; Added in 8.14.0",
              "type": "number"
            }
          },
          "required": [
            "probability"
          ]
        }
      ]
    },
    "_types.aggregations.RangeAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The date field whose values are use to build ranges.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "missing": {
              "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
              "type": "number"
            },
            "ranges": {
              "description": "An array of ranges used to bucket documents.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.aggregations.AggregationRange"
              }
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "keyed": {
              "description": "Set to `true` to associate a unique string key with each bucket and return the ranges as a hash rather than an array.",
              "type": "boolean"
            },
            "format": {
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.aggregations.RareTermsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "exclude": {
              "description": "Terms that should be excluded from the aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsExclude"
                }
              ]
            },
            "field": {
              "description": "The field from which to return rare terms.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "include": {
              "description": "Terms that should be included in the aggregation.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsInclude"
                }
              ]
            },
            "max_doc_count": {
              "description": "The maximum number of documents a term should appear in.",
              "default": 1.0,
              "type": "number"
            },
            "missing": {
              "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.Missing"
                }
              ]
            },
            "precision": {
              "description": "The precision of the internal CuckooFilters.\nSmaller precision leads to better approximation, but higher memory usage.",
              "default": 0.001,
              "type": "number"
            },
            "value_type": {
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.aggregations.RateAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "unit": {
              "description": "The interval used to calculate the rate.\nBy default, the interval of the `date_histogram` is used.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.CalendarInterval"
                }
              ]
            },
            "mode": {
              "description": "How the rate is calculated.\n\nSupported values include:\n  - `sum`: Calculates the sum of all values of the field.\n  - `value_count`: Uses the number of values of the field.\n\n",
              "default": "sum",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.RateMode"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.RateMode": {
      "type": "string",
      "enum": [
        "sum",
        "value_count"
      ]
    },
    "_types.aggregations.ReverseNestedAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "description": "Defines the nested object field that should be joined back to.\nThe default is empty, which means that it joins back to the root/main document level.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.SamplerAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "shard_size": {
              "description": "Limits how many top-scoring documents are collected in the sample processed on each shard.",
              "default": 100.0,
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.aggregations.SamplerAggregationExecutionHint": {
      "type": "string",
      "enum": [
        "map",
        "global_ordinals",
        "bytes_hash"
      ]
    },
    "_types.aggregations.ScriptedHeuristic": {
      "type": "object",
      "properties": {
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        }
      },
      "required": [
        "script"
      ]
    },
    "_types.aggregations.ScriptedMetricAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "combine_script": {
              "description": "Runs once on each shard after document collection is complete.\nAllows the aggregation to consolidate the state returned from each shard.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "init_script": {
              "description": "Runs prior to any collection of documents.\nAllows the aggregation to set up any initial state.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "map_script": {
              "description": "Run once per document collected.\nIf no `combine_script` is specified, the resulting state needs to be stored in the `state` object.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "params": {
              "description": "A global object with script parameters for `init`, `map` and `combine` scripts.\nIt is shared between the scripts.",
              "type": "object",
              "additionalProperties": {
                "type": "object"
              }
            },
            "reduce_script": {
              "description": "Runs once on the coordinating node after all shards have returned their results.\nThe script is provided with access to a variable `states`, which is an array of the result of the `combine_script` on each shard.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.SerialDifferencingAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "lag": {
              "description": "The historical bucket to subtract from the current value.\nMust be a positive, non-zero integer.",
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.aggregations.SignificantTermsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "background_filter": {
              "description": "A background filter that can be used to focus in on significant terms within a narrower context, instead of the entire index.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "chi_square": {
              "description": "Use Chi square, as described in \"Information Retrieval\", Manning et al., Chapter 13.5.2, as the significance score.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ChiSquareHeuristic"
                }
              ]
            },
            "exclude": {
              "description": "Terms to exclude.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsExclude"
                }
              ]
            },
            "execution_hint": {
              "description": "Mechanism by which the aggregation should be executed: using field values directly or using global ordinals.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsAggregationExecutionHint"
                }
              ]
            },
            "field": {
              "description": "The field from which to return significant terms.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "gnd": {
              "description": "Use Google normalized distance as described in \"The Google Similarity Distance\", Cilibrasi and Vitanyi, 2007, as the significance score.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GoogleNormalizedDistanceHeuristic"
                }
              ]
            },
            "include": {
              "description": "Terms to include.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsInclude"
                }
              ]
            },
            "jlh": {
              "description": "Use JLH score as the significance score.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.EmptyObject"
                }
              ]
            },
            "min_doc_count": {
              "description": "Only return terms that are found in more than `min_doc_count` hits.",
              "default": 3.0,
              "type": "number"
            },
            "mutual_information": {
              "description": "Use mutual information as described in \"Information Retrieval\", Manning et al., Chapter 13.5.1, as the significance score.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MutualInformationHeuristic"
                }
              ]
            },
            "percentage": {
              "description": "A simple calculation of the number of documents in the foreground sample with a term divided by the number of documents in the background with the term.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.PercentageScoreHeuristic"
                }
              ]
            },
            "script_heuristic": {
              "description": "Customized score, implemented via a script.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ScriptedHeuristic"
                }
              ]
            },
            "p_value": {
              "description": "Significant terms heuristic that calculates the p-value between the term existing in foreground and background sets.\n\nThe p-value is the probability of obtaining test results at least as extreme as\nthe results actually observed, under the assumption that the null hypothesis is\ncorrect. The p-value is calculated assuming that the foreground set and the\nbackground set are independent https://en.wikipedia.org/wiki/Bernoulli_trial, with the null\nhypothesis that the probabilities are the same.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.PValueHeuristic"
                }
              ]
            },
            "shard_min_doc_count": {
              "description": "Regulates the certainty a shard has if the term should actually be added to the candidate list or not with respect to the `min_doc_count`.\nTerms will only be considered if their local shard frequency within the set is higher than the `shard_min_doc_count`.",
              "type": "number"
            },
            "shard_size": {
              "description": "Can be used to control the volumes of candidate terms produced by each shard.\nBy default, `shard_size` will be automatically estimated based on the number of shards and the `size` parameter.",
              "type": "number"
            },
            "size": {
              "description": "The number of buckets returned out of the overall terms list.",
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.aggregations.SignificantTextAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "background_filter": {
              "description": "A background filter that can be used to focus in on significant terms within a narrower context, instead of the entire index.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "chi_square": {
              "description": "Use Chi square, as described in \"Information Retrieval\", Manning et al., Chapter 13.5.2, as the significance score.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ChiSquareHeuristic"
                }
              ]
            },
            "exclude": {
              "description": "Values to exclude.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsExclude"
                }
              ]
            },
            "execution_hint": {
              "description": "Determines whether the aggregation will use field values directly or global ordinals.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsAggregationExecutionHint"
                }
              ]
            },
            "field": {
              "description": "The field from which to return significant text.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "filter_duplicate_text": {
              "description": "Whether to out duplicate text to deal with noisy data.",
              "type": "boolean"
            },
            "gnd": {
              "description": "Use Google normalized distance as described in \"The Google Similarity Distance\", Cilibrasi and Vitanyi, 2007, as the significance score.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.GoogleNormalizedDistanceHeuristic"
                }
              ]
            },
            "include": {
              "description": "Values to include.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsInclude"
                }
              ]
            },
            "jlh": {
              "description": "Use JLH score as the significance score.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.EmptyObject"
                }
              ]
            },
            "min_doc_count": {
              "description": "Only return values that are found in more than `min_doc_count` hits.",
              "default": 3.0,
              "type": "number"
            },
            "mutual_information": {
              "description": "Use mutual information as described in \"Information Retrieval\", Manning et al., Chapter 13.5.1, as the significance score.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MutualInformationHeuristic"
                }
              ]
            },
            "percentage": {
              "description": "A simple calculation of the number of documents in the foreground sample with a term divided by the number of documents in the background with the term.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.PercentageScoreHeuristic"
                }
              ]
            },
            "script_heuristic": {
              "description": "Customized score, implemented via a script.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ScriptedHeuristic"
                }
              ]
            },
            "shard_min_doc_count": {
              "description": "Regulates the certainty a shard has if the values should actually be added to the candidate list or not with respect to the min_doc_count.\nValues will only be considered if their local shard frequency within the set is higher than the `shard_min_doc_count`.",
              "type": "number"
            },
            "shard_size": {
              "description": "The number of candidate terms produced by each shard.\nBy default, `shard_size` will be automatically estimated based on the number of shards and the `size` parameter.",
              "type": "number"
            },
            "size": {
              "description": "The number of buckets returned out of the overall terms list.",
              "type": "number"
            },
            "source_fields": {
              "description": "Overrides the JSON `_source` fields from which text will be analyzed.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fields"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.SimpleMovingAverageAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MovingAverageAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "model": {
              "type": "string",
              "enum": [
                "simple"
              ]
            },
            "settings": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.EmptyObject"
                }
              ]
            }
          },
          "required": [
            "model",
            "settings"
          ]
        }
      ]
    },
    "_types.aggregations.StatsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.StatsBucketAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.StringStatsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "show_distribution": {
              "description": "Shows the probability distribution for all characters.",
              "default": false,
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.SumAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormatMetricAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.SumBucketAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.PipelineAggregationBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.TDigest": {
      "type": "object",
      "properties": {
        "compression": {
          "description": "Limits the maximum number of nodes used by the underlying TDigest algorithm to `20 * compression`, enabling control of memory usage and approximation error.",
          "type": "number"
        },
        "execution_hint": {
          "description": "The default implementation of TDigest is optimized for performance, scaling to millions or even billions of sample values while maintaining acceptable accuracy levels (close to 1% relative error for millions of samples in some cases).\nTo use an implementation optimized for accuracy, set this parameter to high_accuracy instead.",
          "default": "default",
          "allOf": [
            {
              "$ref": "#/$defs/_types.aggregations.TDigestExecutionHint"
            }
          ]
        }
      }
    },
    "_types.aggregations.TDigestExecutionHint": {
      "type": "string",
      "enum": [
        "default",
        "high_accuracy"
      ]
    },
    "_types.aggregations.TTestAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.Aggregation"
        },
        {
          "type": "object",
          "properties": {
            "a": {
              "description": "Test population A.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TestPopulation"
                }
              ]
            },
            "b": {
              "description": "Test population B.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TestPopulation"
                }
              ]
            },
            "type": {
              "description": "The type of test.\n\nSupported values include:\n  - `paired`: Performs paired t-test.\n  - `homoscedastic`: Performs two-sample equal variance test.\n  - `heteroscedastic`: Performs two-sample unequal variance test.\n\n",
              "default": "heteroscedastic",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TTestType"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.TTestType": {
      "type": "string",
      "enum": [
        "paired",
        "homoscedastic",
        "heteroscedastic"
      ]
    },
    "_types.aggregations.TermsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "collect_mode": {
              "description": "Determines how child aggregations should be calculated: breadth-first or depth-first.\n\nSupported values include:\n  - `depth_first`: Expands all branches of the aggregation tree in one depth-first pass, before any pruning occurs.\n  - `breadth_first`: Caches the set of documents that fall into the uppermost buckets for subsequent replay.\n\n",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsAggregationCollectMode"
                }
              ]
            },
            "exclude": {
              "description": "Values to exclude.\nAccepts regular expressions and partitions.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsExclude"
                }
              ]
            },
            "execution_hint": {
              "description": "Determines whether the aggregation will use field values directly or global ordinals.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsAggregationExecutionHint"
                }
              ]
            },
            "field": {
              "description": "The field from which to return terms.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "include": {
              "description": "Values to include.\nAccepts regular expressions and partitions.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TermsInclude"
                }
              ]
            },
            "min_doc_count": {
              "description": "Only return values that are found in more than `min_doc_count` hits.",
              "default": 1.0,
              "type": "number"
            },
            "missing": {
              "description": "The value to apply to documents that do not have a value.\nBy default, documents without a value are ignored.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.Missing"
                }
              ]
            },
            "missing_order": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.MissingOrder"
                }
              ]
            },
            "missing_bucket": {
              "type": "boolean"
            },
            "value_type": {
              "description": "Coerced unmapped fields into the specified type.",
              "type": "string"
            },
            "order": {
              "description": "Specifies the sort order of the buckets.\nDefaults to sorting by descending document count.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.AggregateOrder"
                }
              ]
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "shard_min_doc_count": {
              "description": "Regulates the certainty a shard has if the term should actually be added to the candidate list or not with respect to the `min_doc_count`.\nTerms will only be considered if their local shard frequency within the set is higher than the `shard_min_doc_count`.",
              "type": "number"
            },
            "shard_size": {
              "description": "The number of candidate terms produced by each shard.\nBy default, `shard_size` will be automatically estimated based on the number of shards and the `size` parameter.",
              "type": "number"
            },
            "show_term_doc_count_error": {
              "description": "Set to `true` to return the `doc_count_error_upper_bound`, which is an upper bound to the error on the `doc_count` returned by each shard.",
              "type": "boolean"
            },
            "size": {
              "description": "The number of buckets returned out of the overall terms list.",
              "default": 10.0,
              "type": "number"
            },
            "format": {
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.aggregations.TermsAggregationCollectMode": {
      "type": "string",
      "enum": [
        "depth_first",
        "breadth_first"
      ]
    },
    "_types.aggregations.TermsAggregationExecutionHint": {
      "type": "string",
      "enum": [
        "map",
        "global_ordinals",
        "global_ordinals_hash",
        "global_ordinals_low_cardinality"
      ]
    },
    "_types.aggregations.TermsExclude": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "_types.aggregations.TermsInclude": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "$ref": "#/$defs/_types.aggregations.TermsPartition"
        }
      ]
    },
    "_types.aggregations.TermsPartition": {
      "type": "object",
      "properties": {
        "num_partitions": {
          "description": "The number of partitions.",
          "type": "number"
        },
        "partition": {
          "description": "The partition number for this request.",
          "type": "number"
        }
      },
      "required": [
        "num_partitions",
        "partition"
      ]
    },
    "_types.aggregations.TestPopulation": {
      "type": "object",
      "properties": {
        "field": {
          "description": "The field to aggregate.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        },
        "filter": {
          "description": "A filter used to define a set of records to run unpaired t-test on.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            }
          ]
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.aggregations.TimeSeriesAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.BucketAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "size": {
              "description": "The maximum number of results to return.",
              "default": 10000.0,
              "type": "number"
            },
            "keyed": {
              "description": "Set to `true` to associate a unique string key with each bucket and returns the ranges as a hash rather than an array.",
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.TopHitsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "docvalue_fields": {
              "description": "Fields for which to return doc values.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.query_dsl.FieldAndFormat"
              }
            },
            "explain": {
              "description": "If `true`, returns detailed information about score computation as part of a hit.",
              "default": false,
              "type": "boolean"
            },
            "fields": {
              "description": "Array of wildcard (*) patterns. The request returns values for field names\nmatching these patterns in the hits.fields property of the response.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.query_dsl.FieldAndFormat"
              }
            },
            "from": {
              "description": "Starting document offset.",
              "default": 0.0,
              "type": "number"
            },
            "highlight": {
              "description": "Specifies the highlighter to use for retrieving highlighted snippets from one or more fields in the search results.",
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.Highlight"
                }
              ]
            },
            "script_fields": {
              "description": "Returns the result of one or more script evaluations for each hit.",
              "type": "object",
              "additionalProperties": {
                "$ref": "#/$defs/_types.ScriptField"
              }
            },
            "size": {
              "description": "The maximum number of top matching hits to return per bucket.",
              "default": 3.0,
              "type": "number"
            },
            "sort": {
              "description": "Sort order of the top matching hits.\nBy default, the hits are sorted by the score of the main query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Sort"
                }
              ]
            },
            "_source": {
              "description": "Selects the fields of the source that are returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.SourceConfig"
                }
              ]
            },
            "stored_fields": {
              "description": "Returns values for the specified stored fields (fields that use the `store` mapping option).",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fields"
                }
              ]
            },
            "track_scores": {
              "description": "If `true`, calculates and returns document scores, even if the scores are not used for sorting.",
              "default": false,
              "type": "boolean"
            },
            "version": {
              "description": "If `true`, returns document version as part of a hit.",
              "default": false,
              "type": "boolean"
            },
            "seq_no_primary_term": {
              "description": "If `true`, returns sequence number and primary term of the last modification of each hit.",
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.aggregations.TopMetricsAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.MetricAggregationBase"
        },
        {
          "type": "object",
          "properties": {
            "metrics": {
              "description": "The fields of the top document to return.",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.TopMetricsValue"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.aggregations.TopMetricsValue"
                  }
                }
              ]
            },
            "size": {
              "description": "The number of top documents from which to return metrics.",
              "default": 1.0,
              "type": "number"
            },
            "sort": {
              "description": "The sort order of the documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Sort"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.TopMetricsValue": {
      "type": "object",
      "properties": {
        "field": {
          "description": "A field to return as a metric.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.aggregations.ValueCountAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.FormattableMetricAggregation"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.aggregations.ValueType": {
      "type": "string",
      "enum": [
        "string",
        "long",
        "double",
        "number",
        "date",
        "date_nanos",
        "ip",
        "numeric",
        "geo_point",
        "boolean"
      ]
    },
    "_types.aggregations.VariableWidthHistogramAggregation": {
      "type": "object",
      "properties": {
        "field": {
          "description": "The name of the field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "buckets": {
          "description": "The target number of buckets.",
          "default": 10.0,
          "type": "number"
        },
        "shard_size": {
          "description": "The number of buckets that the coordinating node will request from each shard.\nDefaults to `buckets * 50`.",
          "type": "number"
        },
        "initial_buffer": {
          "description": "Specifies the number of individual documents that will be stored in memory on a shard before the initial bucketing algorithm is run.\nDefaults to `min(10 * shard_size, 50000)`.",
          "type": "number"
        },
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        }
      }
    },
    "_types.aggregations.WeightedAverageAggregation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.aggregations.Aggregation"
        },
        {
          "type": "object",
          "properties": {
            "format": {
              "description": "A numeric response formatter.",
              "type": "string"
            },
            "value": {
              "description": "Configuration for the field that provides the values.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.WeightedAverageValue"
                }
              ]
            },
            "value_type": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.ValueType"
                }
              ]
            },
            "weight": {
              "description": "Configuration for the field or script that provides the weights.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.aggregations.WeightedAverageValue"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.aggregations.WeightedAverageValue": {
      "type": "object",
      "properties": {
        "field": {
          "description": "The field from which to extract the values or weights.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "missing": {
          "description": "A value or weight to use if the field is missing.",
          "type": "number"
        },
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        }
      }
    },
    "_types.analysis.Analyzer": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.analysis.CustomAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.FingerprintAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.KeywordAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.NoriAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.PatternAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.SimpleAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.StandardAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.StopAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.WhitespaceAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.IcuAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.KuromojiAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.SnowballAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.ArabicAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.ArmenianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.BasqueAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.BengaliAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.BrazilianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.BulgarianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.CatalanAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.ChineseAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.CjkAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.CzechAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.DanishAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.DutchAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.EnglishAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.EstonianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.FinnishAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.FrenchAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.GalicianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.GermanAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.GreekAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.HindiAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.HungarianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.IndonesianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.IrishAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.ItalianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.LatvianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.LithuanianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.NorwegianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.PersianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.PortugueseAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.RomanianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.RussianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.SerbianAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.SoraniAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.SpanishAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.SwedishAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.TurkishAnalyzer"
        },
        {
          "$ref": "#/$defs/_types.analysis.ThaiAnalyzer"
        }
      ]
    },
    "_types.analysis.ApostropheTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "apostrophe"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ArabicAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "arabic"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.ArabicNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "arabic_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ArabicStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "arabic_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ArmenianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "armenian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.AsciiFoldingTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "asciifolding"
              ]
            },
            "preserve_original": {
              "description": "If `true`, emit both original tokens and folded tokens. Defaults to `false`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.BasqueAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "basque"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.BengaliAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "bengali"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.BengaliNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "bengali_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.BrazilianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "brazilian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.BrazilianStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "brazilian_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.BulgarianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "bulgarian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.CatalanAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "catalan"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.CharFilter": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/_types.analysis.CharFilterDefinition"
        }
      ]
    },
    "_types.analysis.CharFilterBase": {
      "type": "object",
      "properties": {
        "version": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        }
      }
    },
    "_types.analysis.CharFilterDefinition": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.analysis.HtmlStripCharFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.MappingCharFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.PatternReplaceCharFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.IcuNormalizationCharFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KuromojiIterationMarkCharFilter"
        }
      ]
    },
    "_types.analysis.CharGroupTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "char_group"
              ]
            },
            "tokenize_on_chars": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "max_token_length": {
              "type": "number"
            }
          },
          "required": [
            "type",
            "tokenize_on_chars"
          ]
        }
      ]
    },
    "_types.analysis.ChineseAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "chinese"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.CjkAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "cjk"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.CjkBigramIgnoredScript": {
      "type": "string",
      "enum": [
        "han",
        "hangul",
        "hiragana",
        "katakana"
      ]
    },
    "_types.analysis.CjkBigramTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "cjk_bigram"
              ]
            },
            "ignored_scripts": {
              "description": "Array of character scripts for which to disable bigrams.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.analysis.CjkBigramIgnoredScript"
              }
            },
            "output_unigrams": {
              "description": "If `true`, emit tokens in both bigram and unigram form. If `false`, a CJK character is output in unigram form when it has no adjacent characters. Defaults to `false`.",
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.CjkWidthTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "cjk_width"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ClassicTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "classic"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ClassicTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "classic"
              ]
            },
            "max_token_length": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.CommonGramsTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "common_grams"
              ]
            },
            "common_words": {
              "description": "A list of tokens. The filter generates bigrams for these tokens.\nEither this or the `common_words_path` parameter is required.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "common_words_path": {
              "description": "Path to a file containing a list of tokens. The filter generates bigrams for these tokens.\nThis path must be absolute or relative to the `config` location. The file must be UTF-8 encoded. Each token in the file must be separated by a line break.\nEither this or the `common_words` parameter is required.",
              "type": "string"
            },
            "ignore_case": {
              "description": "If `true`, matches for common words matching are case-insensitive. Defaults to `false`.",
              "type": "boolean"
            },
            "query_mode": {
              "description": "If `true`, the filter excludes the following tokens from the output:\n- Unigrams for common words\n- Unigrams for terms followed by common words\nDefaults to `false`. We recommend enabling this parameter for search analyzers.",
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.CompoundWordTokenFilterBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "max_subword_size": {
              "description": "Maximum subword character length. Longer subword tokens are excluded from the output. Defaults to `15`.",
              "type": "number"
            },
            "min_subword_size": {
              "description": "Minimum subword character length. Shorter subword tokens are excluded from the output. Defaults to `2`.",
              "type": "number"
            },
            "min_word_size": {
              "description": "Minimum word character length. Shorter word tokens are excluded from the output. Defaults to `5`.",
              "type": "number"
            },
            "only_longest_match": {
              "description": "If `true`, only include the longest matching subword. Defaults to `false`.",
              "type": "boolean"
            },
            "word_list": {
              "description": "A list of subwords to look for in the token stream. If found, the subword is included in the token output.\nEither this parameter or `word_list_path` must be specified.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "word_list_path": {
              "description": "Path to a file that contains a list of subwords to find in the token stream. If found, the subword is included in the token output.\nThis path must be absolute or relative to the config location, and the file must be UTF-8 encoded. Each token in the file must be separated by a line break.\nEither this parameter or `word_list` must be specified.",
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.analysis.ConditionTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "condition"
              ]
            },
            "filter": {
              "description": "Array of token filters. If a token matches the predicate script in the `script` parameter, these filters are applied to the token in the order provided.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "script": {
              "description": "Predicate script used to apply token filters. If a token matches this script, the filters in the `filter` parameter are applied to the token.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            }
          },
          "required": [
            "type",
            "filter",
            "script"
          ]
        }
      ]
    },
    "_types.analysis.CustomAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "custom"
          ]
        },
        "char_filter": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "filter": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "position_increment_gap": {
          "type": "number"
        },
        "position_offset_gap": {
          "type": "number"
        },
        "tokenizer": {
          "type": "string"
        }
      },
      "required": [
        "type",
        "tokenizer"
      ]
    },
    "_types.analysis.CustomNormalizer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "custom"
          ]
        },
        "char_filter": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "filter": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.CzechAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "czech"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.CzechStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "czech_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.DanishAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "danish"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.DecimalDigitTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "decimal_digit"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.DelimitedPayloadEncoding": {
      "type": "string",
      "enum": [
        "int",
        "float",
        "identity"
      ]
    },
    "_types.analysis.DelimitedPayloadTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "delimited_payload"
              ]
            },
            "delimiter": {
              "description": "Character used to separate tokens from payloads. Defaults to `|`.",
              "type": "string"
            },
            "encoding": {
              "description": "Data type for the stored payload.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.DelimitedPayloadEncoding"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.DictionaryDecompounderTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.CompoundWordTokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "dictionary_decompounder"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.DutchAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "dutch"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.DutchStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "dutch_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.EdgeNGramSide": {
      "type": "string",
      "enum": [
        "front",
        "back"
      ]
    },
    "_types.analysis.EdgeNGramTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "edge_ngram"
              ]
            },
            "max_gram": {
              "description": "Maximum character length of a gram. For custom token filters, defaults to `2`. For the built-in edge_ngram filter, defaults to `1`.",
              "type": "number"
            },
            "min_gram": {
              "description": "Minimum character length of a gram. Defaults to `1`.",
              "type": "number"
            },
            "side": {
              "description": "Indicates whether to truncate tokens from the `front` or `back`. Defaults to `front`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.EdgeNGramSide"
                }
              ]
            },
            "preserve_original": {
              "description": "Emits original token when set to `true`. Defaults to `false`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.EdgeNGramTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "edge_ngram"
              ]
            },
            "custom_token_chars": {
              "type": "string"
            },
            "max_gram": {
              "type": "number"
            },
            "min_gram": {
              "type": "number"
            },
            "token_chars": {
              "default": [],
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.analysis.TokenChar"
              }
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ElisionTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "elision"
              ]
            },
            "articles": {
              "description": "List of elisions to remove.\nTo be removed, the elision must be at the beginning of a token and be immediately followed by an apostrophe. Both the elision and apostrophe are removed.\nFor custom `elision` filters, either this parameter or `articles_path` must be specified.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "articles_path": {
              "description": "Path to a file that contains a list of elisions to remove.\nThis path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each elision in the file must be separated by a line break.\nTo be removed, the elision must be at the beginning of a token and be immediately followed by an apostrophe. Both the elision and apostrophe are removed.\nFor custom `elision` filters, either this parameter or `articles` must be specified.",
              "type": "string"
            },
            "articles_case": {
              "description": "If `true`, elision matching is case insensitive. If `false`, elision matching is case sensitive. Defaults to `false`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.EnglishAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "english"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.EstonianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "estonian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.FingerprintAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "fingerprint"
          ]
        },
        "version": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        },
        "max_output_size": {
          "description": "The maximum token size to emit. Tokens larger than this size will be discarded.\nDefaults to `255`",
          "default": 255.0,
          "type": "number"
        },
        "separator": {
          "description": "The character to use to concatenate the terms.\nDefaults to a space.",
          "type": "string"
        },
        "stopwords": {
          "description": "A pre-defined stop words list like `_english_` or an array containing a list of stop words.\nDefaults to `_none_`.",
          "default": "_none_",
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "description": "The path to a file containing stop words.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.FingerprintTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "fingerprint"
              ]
            },
            "max_output_size": {
              "description": "Maximum character length, including whitespace, of the output token. Defaults to `255`. Concatenated tokens longer than this will result in no token output.",
              "type": "number"
            },
            "separator": {
              "description": "Character to use to concatenate the token stream input. Defaults to a space.",
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.FinnishAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "finnish"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.FlattenGraphTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "flatten_graph"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.FrenchAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "french"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.FrenchStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "french_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.GalicianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "galician"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.GermanAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "german"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.GermanNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "german_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.GermanStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "german_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.GreekAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "greek"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.HindiAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "hindi"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.HindiNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "hindi_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.HtmlStripCharFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.CharFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "html_strip"
              ]
            },
            "escaped_tags": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.HungarianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "hungarian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.HunspellTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "hunspell"
              ]
            },
            "dedup": {
              "description": "If `true`, duplicate tokens are removed from the filter’s output. Defaults to `true`.",
              "type": "boolean"
            },
            "dictionary": {
              "description": "One or more `.dic` files (e.g, `en_US.dic`, my_custom.dic) to use for the Hunspell dictionary.\nBy default, the `hunspell` filter uses all `.dic` files in the `<$ES_PATH_CONF>/hunspell/<locale>` directory specified using the `lang`, `language`, or `locale` parameter.",
              "type": "string"
            },
            "locale": {
              "description": "Locale directory used to specify the `.aff` and `.dic` files for a Hunspell dictionary.",
              "type": "string"
            },
            "longest_only": {
              "description": "If `true`, only the longest stemmed version of each token is included in the output. If `false`, all stemmed versions of the token are included. Defaults to `false`.",
              "type": "boolean"
            }
          },
          "required": [
            "type",
            "locale"
          ]
        }
      ]
    },
    "_types.analysis.HyphenationDecompounderTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.CompoundWordTokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "hyphenation_decompounder"
              ]
            },
            "hyphenation_patterns_path": {
              "description": "Path to an Apache FOP (Formatting Objects Processor) XML hyphenation pattern file.\nThis path must be absolute or relative to the `config` location. Only FOP v1.2 compatible files are supported.",
              "type": "string"
            },
            "no_sub_matches": {
              "description": "If `true`, do not match sub tokens in tokens that are in the word list. Defaults to `false`.",
              "type": "boolean"
            },
            "no_overlapping_matches": {
              "description": "If `true`, do not allow overlapping tokens. Defaults to `false`.",
              "type": "boolean"
            }
          },
          "required": [
            "type",
            "hyphenation_patterns_path"
          ]
        }
      ]
    },
    "_types.analysis.IcuAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "icu_analyzer"
          ]
        },
        "method": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.IcuNormalizationType"
            }
          ]
        },
        "mode": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.IcuNormalizationMode"
            }
          ]
        }
      },
      "required": [
        "type",
        "method",
        "mode"
      ]
    },
    "_types.analysis.IcuCollationAlternate": {
      "type": "string",
      "enum": [
        "shifted",
        "non-ignorable"
      ]
    },
    "_types.analysis.IcuCollationCaseFirst": {
      "type": "string",
      "enum": [
        "lower",
        "upper"
      ]
    },
    "_types.analysis.IcuCollationDecomposition": {
      "type": "string",
      "enum": [
        "no",
        "identical"
      ]
    },
    "_types.analysis.IcuCollationStrength": {
      "type": "string",
      "enum": [
        "primary",
        "secondary",
        "tertiary",
        "quaternary",
        "identical"
      ]
    },
    "_types.analysis.IcuCollationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "icu_collation"
              ]
            },
            "alternate": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuCollationAlternate"
                }
              ]
            },
            "caseFirst": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuCollationCaseFirst"
                }
              ]
            },
            "caseLevel": {
              "type": "boolean"
            },
            "country": {
              "type": "string"
            },
            "decomposition": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuCollationDecomposition"
                }
              ]
            },
            "hiraganaQuaternaryMode": {
              "type": "boolean"
            },
            "language": {
              "type": "string"
            },
            "numeric": {
              "type": "boolean"
            },
            "rules": {
              "type": "string"
            },
            "strength": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuCollationStrength"
                }
              ]
            },
            "variableTop": {
              "type": "string"
            },
            "variant": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.IcuFoldingTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "icu_folding"
              ]
            },
            "unicode_set_filter": {
              "type": "string"
            }
          },
          "required": [
            "type",
            "unicode_set_filter"
          ]
        }
      ]
    },
    "_types.analysis.IcuNormalizationCharFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.CharFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "icu_normalizer"
              ]
            },
            "mode": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuNormalizationMode"
                }
              ]
            },
            "name": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuNormalizationType"
                }
              ]
            },
            "unicode_set_filter": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.IcuNormalizationMode": {
      "type": "string",
      "enum": [
        "decompose",
        "compose"
      ]
    },
    "_types.analysis.IcuNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "icu_normalizer"
              ]
            },
            "name": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuNormalizationType"
                }
              ]
            }
          },
          "required": [
            "type",
            "name"
          ]
        }
      ]
    },
    "_types.analysis.IcuNormalizationType": {
      "type": "string",
      "enum": [
        "nfc",
        "nfkc",
        "nfkc_cf"
      ]
    },
    "_types.analysis.IcuTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "icu_tokenizer"
              ]
            },
            "rule_files": {
              "type": "string"
            }
          },
          "required": [
            "type",
            "rule_files"
          ]
        }
      ]
    },
    "_types.analysis.IcuTransformDirection": {
      "type": "string",
      "enum": [
        "forward",
        "reverse"
      ]
    },
    "_types.analysis.IcuTransformTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "icu_transform"
              ]
            },
            "dir": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuTransformDirection"
                }
              ]
            },
            "id": {
              "type": "string"
            }
          },
          "required": [
            "type",
            "id"
          ]
        }
      ]
    },
    "_types.analysis.IndicNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "indic_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.IndonesianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "indonesian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.IrishAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "irish"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.ItalianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "italian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.JaStopTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "ja_stop"
              ]
            },
            "stopwords": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.StopWords"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.KStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "kstem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.KeepTypesMode": {
      "type": "string",
      "enum": [
        "include",
        "exclude"
      ]
    },
    "_types.analysis.KeepTypesTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "keep_types"
              ]
            },
            "mode": {
              "description": "Indicates whether to keep or remove the specified token types.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.KeepTypesMode"
                }
              ]
            },
            "types": {
              "description": "List of token types to keep or remove.",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "type",
            "types"
          ]
        }
      ]
    },
    "_types.analysis.KeepWordsTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "keep"
              ]
            },
            "keep_words": {
              "description": "List of words to keep. Only tokens that match words in this list are included in the output.\nEither this parameter or `keep_words_path` must be specified.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "keep_words_case": {
              "description": "If `true`, lowercase all keep words. Defaults to `false`.",
              "type": "boolean"
            },
            "keep_words_path": {
              "description": "Path to a file that contains a list of words to keep. Only tokens that match words in this list are included in the output.\nThis path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each word in the file must be separated by a line break.\nEither this parameter or `keep_words` must be specified.",
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.KeywordAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "keyword"
          ]
        },
        "version": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.KeywordMarkerTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "keyword_marker"
              ]
            },
            "ignore_case": {
              "description": "If `true`, matching for the `keywords` and `keywords_path` parameters ignores letter case. Defaults to `false`.",
              "type": "boolean"
            },
            "keywords": {
              "description": "Array of keywords. Tokens that match these keywords are not stemmed.\nThis parameter, `keywords_path`, or `keywords_pattern` must be specified. You cannot specify this parameter and `keywords_pattern`.",
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "keywords_path": {
              "description": "Path to a file that contains a list of keywords. Tokens that match these keywords are not stemmed.\nThis path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each word in the file must be separated by a line break.\nThis parameter, `keywords`, or `keywords_pattern` must be specified. You cannot specify this parameter and `keywords_pattern`.",
              "type": "string"
            },
            "keywords_pattern": {
              "description": "Java regular expression used to match tokens. Tokens that match this expression are marked as keywords and not stemmed.\nThis parameter, `keywords`, or `keywords_path` must be specified. You cannot specify this parameter and `keywords` or `keywords_pattern`.",
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.KeywordRepeatTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "keyword_repeat"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.KeywordTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "keyword"
              ]
            },
            "buffer_size": {
              "default": 256.0,
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.KuromojiAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "kuromoji"
          ]
        },
        "mode": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.KuromojiTokenizationMode"
            }
          ]
        },
        "user_dictionary": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.KuromojiIterationMarkCharFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.CharFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "kuromoji_iteration_mark"
              ]
            },
            "normalize_kana": {
              "type": "boolean"
            },
            "normalize_kanji": {
              "type": "boolean"
            }
          },
          "required": [
            "type",
            "normalize_kana",
            "normalize_kanji"
          ]
        }
      ]
    },
    "_types.analysis.KuromojiPartOfSpeechTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "kuromoji_part_of_speech"
              ]
            },
            "stoptags": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "type",
            "stoptags"
          ]
        }
      ]
    },
    "_types.analysis.KuromojiReadingFormTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "kuromoji_readingform"
              ]
            },
            "use_romaji": {
              "type": "boolean"
            }
          },
          "required": [
            "type",
            "use_romaji"
          ]
        }
      ]
    },
    "_types.analysis.KuromojiStemmerTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "kuromoji_stemmer"
              ]
            },
            "minimum_length": {
              "type": "number"
            }
          },
          "required": [
            "type",
            "minimum_length"
          ]
        }
      ]
    },
    "_types.analysis.KuromojiTokenizationMode": {
      "type": "string",
      "enum": [
        "normal",
        "search",
        "extended"
      ]
    },
    "_types.analysis.KuromojiTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "kuromoji_tokenizer"
              ]
            },
            "discard_punctuation": {
              "type": "boolean"
            },
            "mode": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.KuromojiTokenizationMode"
                }
              ]
            },
            "nbest_cost": {
              "type": "number"
            },
            "nbest_examples": {
              "type": "string"
            },
            "user_dictionary": {
              "type": "string"
            },
            "user_dictionary_rules": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "discard_compound_token": {
              "type": "boolean"
            }
          },
          "required": [
            "type",
            "mode"
          ]
        }
      ]
    },
    "_types.analysis.LatvianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "latvian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.LengthTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "length"
              ]
            },
            "max": {
              "description": "Maximum character length of a token. Longer tokens are excluded from the output. Defaults to `Integer.MAX_VALUE`, which is `2^31-1` or `2147483647`.",
              "type": "number"
            },
            "min": {
              "description": "Minimum character length of a token. Shorter tokens are excluded from the output. Defaults to `0`.",
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.LetterTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "letter"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.LimitTokenCountTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "limit"
              ]
            },
            "consume_all_tokens": {
              "description": "If `true`, the limit filter exhausts the token stream, even if the `max_token_count` has already been reached. Defaults to `false`.",
              "type": "boolean"
            },
            "max_token_count": {
              "description": "Maximum number of tokens to keep. Once this limit is reached, any remaining tokens are excluded from the output. Defaults to `1`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.LithuanianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "lithuanian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.LowercaseNormalizer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "lowercase"
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.LowercaseTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "lowercase"
              ]
            },
            "language": {
              "description": "Language-specific lowercase token filter to use.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.LowercaseTokenFilterLanguages"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.LowercaseTokenFilterLanguages": {
      "type": "string",
      "enum": [
        "greek",
        "irish",
        "turkish"
      ]
    },
    "_types.analysis.LowercaseTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "lowercase"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.MappingCharFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.CharFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "mapping"
              ]
            },
            "mappings": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "mappings_path": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.MinHashTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "min_hash"
              ]
            },
            "bucket_count": {
              "description": "Number of buckets to which hashes are assigned. Defaults to `512`.",
              "type": "number"
            },
            "hash_count": {
              "description": "Number of ways to hash each token in the stream. Defaults to `1`.",
              "type": "number"
            },
            "hash_set_size": {
              "description": "Number of hashes to keep from each bucket. Defaults to `1`.\nHashes are retained by ascending size, starting with the bucket’s smallest hash first.",
              "type": "number"
            },
            "with_rotation": {
              "description": "If `true`, the filter fills empty buckets with the value of the first non-empty bucket to its circular right if the `hash_set_size` is `1`. If the `bucket_count` argument is greater than 1, this parameter defaults to `true`. Otherwise, this parameter defaults to `false`.",
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.MultiplexerTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "multiplexer"
              ]
            },
            "filters": {
              "description": "A list of token filters to apply to incoming tokens.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "preserve_original": {
              "description": "If `true` (the default) then emit the original token in addition to the filtered tokens.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
                }
              ]
            }
          },
          "required": [
            "type",
            "filters"
          ]
        }
      ]
    },
    "_types.analysis.NGramTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "ngram"
              ]
            },
            "max_gram": {
              "description": "Maximum length of characters in a gram. Defaults to `2`.",
              "type": "number"
            },
            "min_gram": {
              "description": "Minimum length of characters in a gram. Defaults to `1`.",
              "type": "number"
            },
            "preserve_original": {
              "description": "Emits original token when set to `true`. Defaults to `false`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.NGramTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "ngram"
              ]
            },
            "custom_token_chars": {
              "type": "string"
            },
            "max_gram": {
              "type": "number"
            },
            "min_gram": {
              "type": "number"
            },
            "token_chars": {
              "default": [],
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.analysis.TokenChar"
              }
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.NoriAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "nori"
          ]
        },
        "version": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        },
        "decompound_mode": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.NoriDecompoundMode"
            }
          ]
        },
        "stoptags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "user_dictionary": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.NoriDecompoundMode": {
      "type": "string",
      "enum": [
        "discard",
        "none",
        "mixed"
      ]
    },
    "_types.analysis.NoriPartOfSpeechTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "nori_part_of_speech"
              ]
            },
            "stoptags": {
              "description": "An array of part-of-speech tags that should be removed.",
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.NoriTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "nori_tokenizer"
              ]
            },
            "decompound_mode": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.NoriDecompoundMode"
                }
              ]
            },
            "discard_punctuation": {
              "type": "boolean"
            },
            "user_dictionary": {
              "type": "string"
            },
            "user_dictionary_rules": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.Normalizer": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.analysis.LowercaseNormalizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.CustomNormalizer"
        }
      ]
    },
    "_types.analysis.NorwegianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "norwegian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.PathHierarchyTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "path_hierarchy"
              ]
            },
            "buffer_size": {
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
                }
              ]
            },
            "delimiter": {
              "type": "string"
            },
            "replacement": {
              "type": "string"
            },
            "reverse": {
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
                }
              ]
            },
            "skip": {
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.PatternAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "pattern"
          ]
        },
        "version": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        },
        "flags": {
          "description": "Java regular expression flags. Flags should be pipe-separated, eg \"CASE_INSENSITIVE|COMMENTS\".",
          "type": "string"
        },
        "lowercase": {
          "description": "Should terms be lowercased or not.\nDefaults to `true`.",
          "default": true,
          "type": "boolean"
        },
        "pattern": {
          "description": "A Java regular expression.\nDefaults to `\\W+`.",
          "default": "\\W+",
          "type": "string"
        },
        "stopwords": {
          "description": "A pre-defined stop words list like `_english_` or an array containing a list of stop words.\nDefaults to `_none_`.",
          "default": "_none_",
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "description": "The path to a file containing stop words.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.PatternCaptureTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "pattern_capture"
              ]
            },
            "patterns": {
              "description": "A list of regular expressions to match.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "preserve_original": {
              "description": "If set to `true` (the default) it will emit the original token.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
                }
              ]
            }
          },
          "required": [
            "type",
            "patterns"
          ]
        }
      ]
    },
    "_types.analysis.PatternReplaceCharFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.CharFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "pattern_replace"
              ]
            },
            "flags": {
              "type": "string"
            },
            "pattern": {
              "type": "string"
            },
            "replacement": {
              "type": "string"
            }
          },
          "required": [
            "type",
            "pattern"
          ]
        }
      ]
    },
    "_types.analysis.PatternReplaceTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "pattern_replace"
              ]
            },
            "all": {
              "description": "If `true`, all substrings matching the pattern parameter’s regular expression are replaced. If `false`, the filter replaces only the first matching substring in each token. Defaults to `true`.",
              "type": "boolean"
            },
            "flags": {
              "type": "string"
            },
            "pattern": {
              "description": "Regular expression, written in Java’s regular expression syntax. The filter replaces token substrings matching this pattern with the substring in the `replacement` parameter.",
              "type": "string"
            },
            "replacement": {
              "description": "Replacement substring. Defaults to an empty substring (`\"\"`).",
              "type": "string"
            }
          },
          "required": [
            "type",
            "pattern"
          ]
        }
      ]
    },
    "_types.analysis.PatternTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "pattern"
              ]
            },
            "flags": {
              "type": "string"
            },
            "group": {
              "type": "number"
            },
            "pattern": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.PersianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "persian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.PersianNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "persian_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.PersianStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "persian_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.PhoneticEncoder": {
      "type": "string",
      "enum": [
        "metaphone",
        "double_metaphone",
        "soundex",
        "refined_soundex",
        "caverphone1",
        "caverphone2",
        "cologne",
        "nysiis",
        "koelnerphonetik",
        "haasephonetik",
        "beider_morse",
        "daitch_mokotoff"
      ]
    },
    "_types.analysis.PhoneticLanguage": {
      "type": "string",
      "enum": [
        "any",
        "common",
        "cyrillic",
        "english",
        "french",
        "german",
        "hebrew",
        "hungarian",
        "polish",
        "romanian",
        "russian",
        "spanish"
      ]
    },
    "_types.analysis.PhoneticNameType": {
      "type": "string",
      "enum": [
        "generic",
        "ashkenazi",
        "sephardic"
      ]
    },
    "_types.analysis.PhoneticRuleType": {
      "type": "string",
      "enum": [
        "approx",
        "exact"
      ]
    },
    "_types.analysis.PhoneticTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "phonetic"
              ]
            },
            "encoder": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.PhoneticEncoder"
                }
              ]
            },
            "languageset": {
              "description": "\n\nSupported values include: `any`, `common`, `cyrillic`, `english`, `french`, `german`, `hebrew`, `hungarian`, `polish`, `romanian`, `russian`, `spanish`\n\n",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.analysis.PhoneticLanguage"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.analysis.PhoneticLanguage"
                  }
                }
              ]
            },
            "max_code_len": {
              "type": "number"
            },
            "name_type": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.PhoneticNameType"
                }
              ]
            },
            "replace": {
              "type": "boolean"
            },
            "rule_type": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.PhoneticRuleType"
                }
              ]
            }
          },
          "required": [
            "type",
            "encoder"
          ]
        }
      ]
    },
    "_types.analysis.PorterStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "porter_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.PortugueseAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "portuguese"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.PredicateTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "predicate_token_filter"
              ]
            },
            "script": {
              "description": "Script containing a condition used to filter incoming tokens. Only tokens that match this script are included in the output.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            }
          },
          "required": [
            "type",
            "script"
          ]
        }
      ]
    },
    "_types.analysis.RemoveDuplicatesTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "remove_duplicates"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ReverseTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "reverse"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.RomanianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "romanian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.RussianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "russian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.RussianStemTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "russian_stem"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ScandinavianFoldingTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "scandinavian_folding"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ScandinavianNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "scandinavian_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.SerbianAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "serbian"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.SerbianNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "serbian_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.ShingleTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "shingle"
              ]
            },
            "filler_token": {
              "description": "String used in shingles as a replacement for empty positions that do not contain a token. This filler token is only used in shingles, not original unigrams. Defaults to an underscore (`_`).",
              "type": "string"
            },
            "max_shingle_size": {
              "description": "Maximum number of tokens to concatenate when creating shingles. Defaults to `2`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
                }
              ]
            },
            "min_shingle_size": {
              "description": "Minimum number of tokens to concatenate when creating shingles. Defaults to `2`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
                }
              ]
            },
            "output_unigrams": {
              "description": "If `true`, the output includes the original input tokens. If `false`, the output only includes shingles; the original input tokens are removed. Defaults to `true`.",
              "type": "boolean"
            },
            "output_unigrams_if_no_shingles": {
              "description": "If `true`, the output includes the original input tokens only if no shingles are produced; if shingles are produced, the output only includes shingles. Defaults to `false`.",
              "type": "boolean"
            },
            "token_separator": {
              "description": "Separator used to concatenate adjacent tokens to form a shingle. Defaults to a space (`\" \"`).",
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.SimpleAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "simple"
          ]
        },
        "version": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.SimplePatternSplitTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "simple_pattern_split"
              ]
            },
            "pattern": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.SimplePatternTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "simple_pattern"
              ]
            },
            "pattern": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.SnowballAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "snowball"
          ]
        },
        "version": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        },
        "language": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.SnowballLanguage"
            }
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        }
      },
      "required": [
        "type",
        "language"
      ]
    },
    "_types.analysis.SnowballLanguage": {
      "type": "string",
      "enum": [
        "Arabic",
        "Armenian",
        "Basque",
        "Catalan",
        "Danish",
        "Dutch",
        "English",
        "Estonian",
        "Finnish",
        "French",
        "German",
        "German2",
        "Hungarian",
        "Italian",
        "Irish",
        "Kp",
        "Lithuanian",
        "Lovins",
        "Norwegian",
        "Porter",
        "Portuguese",
        "Romanian",
        "Russian",
        "Serbian",
        "Spanish",
        "Swedish",
        "Turkish"
      ]
    },
    "_types.analysis.SnowballTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "snowball"
              ]
            },
            "language": {
              "description": "Controls the language used by the stemmer.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.SnowballLanguage"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.SoraniAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "sorani"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.SoraniNormalizationTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "sorani_normalization"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.SpanishAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "spanish"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.StandardAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "standard"
          ]
        },
        "max_token_length": {
          "description": "The maximum token length. If a token is seen that exceeds this length then it is split at `max_token_length` intervals.\nDefaults to `255`.",
          "default": 255.0,
          "type": "number"
        },
        "stopwords": {
          "description": "A pre-defined stop words list like `_english_` or an array containing a list of stop words.\nDefaults to `_none_`.",
          "default": "_none_",
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "description": "The path to a file containing stop words.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.StandardTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "standard"
              ]
            },
            "max_token_length": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.StemmerOverrideTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "stemmer_override"
              ]
            },
            "rules": {
              "description": "A list of mapping rules to use.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "rules_path": {
              "description": "A path (either relative to `config` location, or absolute) to a list of mappings.",
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.StemmerTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "stemmer"
              ]
            },
            "language": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.StopAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "stop"
          ]
        },
        "version": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        },
        "stopwords": {
          "description": "A pre-defined stop words list like `_english_` or an array containing a list of stop words.\nDefaults to `_none_`.",
          "default": "_none_",
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "description": "The path to a file containing stop words.",
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.StopTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "stop"
              ]
            },
            "ignore_case": {
              "description": "If `true`, stop word matching is case insensitive. For example, if `true`, a stop word of the matches and removes `The`, `THE`, or `the`. Defaults to `false`.",
              "type": "boolean"
            },
            "remove_trailing": {
              "description": "If `true`, the last token of a stream is removed if it’s a stop word. Defaults to `true`.",
              "type": "boolean"
            },
            "stopwords": {
              "description": "Language value, such as `_arabic_` or `_thai_`. Defaults to `_english_`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.StopWords"
                }
              ]
            },
            "stopwords_path": {
              "description": "Path to a file that contains a list of stop words to remove.\nThis path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each stop word in the file must be separated by a line break.",
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.StopWordLanguage": {
      "type": "string",
      "enum": [
        "_arabic_",
        "_armenian_",
        "_basque_",
        "_bengali_",
        "_brazilian_",
        "_bulgarian_",
        "_catalan_",
        "_cjk_",
        "_czech_",
        "_danish_",
        "_dutch_",
        "_english_",
        "_estonian_",
        "_finnish_",
        "_french_",
        "_galician_",
        "_german_",
        "_greek_",
        "_hindi_",
        "_hungarian_",
        "_indonesian_",
        "_irish_",
        "_italian_",
        "_latvian_",
        "_lithuanian_",
        "_norwegian_",
        "_persian_",
        "_portuguese_",
        "_romanian_",
        "_russian_",
        "_serbian_",
        "_sorani_",
        "_spanish_",
        "_swedish_",
        "_thai_",
        "_turkish_",
        "_none_"
      ]
    },
    "_types.analysis.StopWords": {
      "description": "Language value, such as _arabic_ or _thai_. Defaults to _english_.\nEach language value corresponds to a predefined list of stop words in Lucene. See Stop words by language for supported language values and their stop words.\nAlso accepts an array of stop words.",
      "oneOf": [
        {
          "$ref": "#/$defs/_types.analysis.StopWordLanguage"
        },
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      ]
    },
    "_types.analysis.SwedishAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "swedish"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.SynonymFormat": {
      "type": "string",
      "enum": [
        "solr",
        "wordnet"
      ]
    },
    "_types.analysis.SynonymGraphTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.SynonymTokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "synonym_graph"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.SynonymTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.SynonymTokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "synonym"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.SynonymTokenFilterBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "expand": {
              "description": "Expands definitions for equivalent synonym rules. Defaults to `true`.",
              "type": "boolean"
            },
            "format": {
              "description": "Sets the synonym rules format.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.SynonymFormat"
                }
              ]
            },
            "lenient": {
              "description": "If `true` ignores errors while parsing the synonym rules. It is important to note that only those synonym rules which cannot get parsed are ignored. Defaults to the value of the `updateable` setting.",
              "type": "boolean"
            },
            "synonyms": {
              "description": "Used to define inline synonyms.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "synonyms_path": {
              "description": "Used to provide a synonym file. This path must be absolute or relative to the `config` location.",
              "type": "string"
            },
            "synonyms_set": {
              "description": "Provide a synonym set created via Synonyms Management APIs.",
              "type": "string"
            },
            "tokenizer": {
              "deprecated": true,
              "description": "Controls the tokenizers that will be used to tokenize the synonym, this parameter is for backwards compatibility for indices that created before 6.0.",
              "type": "string"
            },
            "updateable": {
              "description": "If `true` allows reloading search analyzers to pick up changes to synonym files. Only to be used for search analyzers. Defaults to `false`.",
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.analysis.ThaiAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "thai"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.ThaiTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "thai"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.TokenChar": {
      "type": "string",
      "enum": [
        "letter",
        "digit",
        "whitespace",
        "punctuation",
        "symbol",
        "custom"
      ]
    },
    "_types.analysis.TokenFilter": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterDefinition"
        }
      ]
    },
    "_types.analysis.TokenFilterBase": {
      "type": "object",
      "properties": {
        "version": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        }
      }
    },
    "_types.analysis.TokenFilterDefinition": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.analysis.ApostropheTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ArabicStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ArabicNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.AsciiFoldingTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.BengaliNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.BrazilianStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.CjkBigramTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.CjkWidthTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ClassicTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.CommonGramsTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ConditionTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.CzechStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.DecimalDigitTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.DelimitedPayloadTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.DutchStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.EdgeNGramTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ElisionTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.FingerprintTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.FlattenGraphTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.FrenchStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.GermanNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.GermanStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.HindiNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.HunspellTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.HyphenationDecompounderTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.IndicNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KeepTypesTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KeepWordsTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KeywordMarkerTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KeywordRepeatTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.LengthTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.LimitTokenCountTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.LowercaseTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.MinHashTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.MultiplexerTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.NGramTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.NoriPartOfSpeechTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.PatternCaptureTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.PatternReplaceTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.PersianNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.PersianStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.PorterStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.PredicateTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.RemoveDuplicatesTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ReverseTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.RussianStemTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ScandinavianFoldingTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ScandinavianNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.SerbianNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.ShingleTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.SnowballTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.SoraniNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.StemmerOverrideTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.StemmerTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.StopTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.SynonymGraphTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.SynonymTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.TrimTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.TruncateTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.UniqueTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.UppercaseTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.WordDelimiterGraphTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.WordDelimiterTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.JaStopTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KuromojiStemmerTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KuromojiReadingFormTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.KuromojiPartOfSpeechTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.IcuCollationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.IcuFoldingTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.IcuNormalizationTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.IcuTransformTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.PhoneticTokenFilter"
        },
        {
          "$ref": "#/$defs/_types.analysis.DictionaryDecompounderTokenFilter"
        }
      ]
    },
    "_types.analysis.Tokenizer": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/_types.analysis.TokenizerDefinition"
        }
      ]
    },
    "_types.analysis.TokenizerBase": {
      "type": "object",
      "properties": {
        "version": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        }
      }
    },
    "_types.analysis.TokenizerDefinition": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.analysis.CharGroupTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.ClassicTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.EdgeNGramTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.KeywordTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.LetterTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.LowercaseTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.NGramTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.PathHierarchyTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.PatternTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.SimplePatternTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.SimplePatternSplitTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.StandardTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.ThaiTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.UaxEmailUrlTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.WhitespaceTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.IcuTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.KuromojiTokenizer"
        },
        {
          "$ref": "#/$defs/_types.analysis.NoriTokenizer"
        }
      ]
    },
    "_types.analysis.TrimTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "trim"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.TruncateTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "truncate"
              ]
            },
            "length": {
              "description": "Character limit for each token. Tokens exceeding this limit are truncated. Defaults to `10`.",
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.TurkishAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "turkish"
          ]
        },
        "stopwords": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.analysis.StopWords"
            }
          ]
        },
        "stopwords_path": {
          "type": "string"
        },
        "stem_exclusion": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.UaxEmailUrlTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "uax_url_email"
              ]
            },
            "max_token_length": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.UniqueTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "unique"
              ]
            },
            "only_on_same_position": {
              "description": "If `true`, only remove duplicate tokens in the same position. Defaults to `false`.",
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.UppercaseTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "uppercase"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.WhitespaceAnalyzer": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "whitespace"
          ]
        },
        "version": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.analysis.WhitespaceTokenizer": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenizerBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "whitespace"
              ]
            },
            "max_token_length": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.WordDelimiterGraphTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.WordDelimiterTokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "word_delimiter_graph"
              ]
            },
            "adjust_offsets": {
              "description": "If `true`, the filter adjusts the offsets of split or catenated tokens to better reflect their actual position in the token stream. Defaults to `true`.",
              "type": "boolean"
            },
            "ignore_keywords": {
              "description": "If `true`, the filter skips tokens with a keyword attribute of true. Defaults to `false`.",
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.WordDelimiterTokenFilter": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.WordDelimiterTokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "word_delimiter"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.analysis.WordDelimiterTokenFilterBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.analysis.TokenFilterBase"
        },
        {
          "type": "object",
          "properties": {
            "catenate_all": {
              "description": "If `true`, the filter produces catenated tokens for chains of alphanumeric characters separated by non-alphabetic delimiters. Defaults to `false`.",
              "type": "boolean"
            },
            "catenate_numbers": {
              "description": "If `true`, the filter produces catenated tokens for chains of numeric characters separated by non-alphabetic delimiters. Defaults to `false`.",
              "type": "boolean"
            },
            "catenate_words": {
              "description": "If `true`, the filter produces catenated tokens for chains of alphabetical characters separated by non-alphabetic delimiters. Defaults to `false`.",
              "type": "boolean"
            },
            "generate_number_parts": {
              "description": "If `true`, the filter includes tokens consisting of only numeric characters in the output. If `false`, the filter excludes these tokens from the output. Defaults to `true`.",
              "type": "boolean"
            },
            "generate_word_parts": {
              "description": "If `true`, the filter includes tokens consisting of only alphabetical characters in the output. If `false`, the filter excludes these tokens from the output. Defaults to `true`.",
              "type": "boolean"
            },
            "preserve_original": {
              "description": "If `true`, the filter includes the original version of any split tokens in the output. This original version includes non-alphanumeric delimiters. Defaults to `false`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
                }
              ]
            },
            "protected_words": {
              "description": "Array of tokens the filter won’t split.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "protected_words_path": {
              "description": "Path to a file that contains a list of tokens the filter won’t split.\nThis path must be absolute or relative to the `config` location, and the file must be UTF-8 encoded. Each token in the file must be separated by a line break.",
              "type": "string"
            },
            "split_on_case_change": {
              "description": "If `true`, the filter splits tokens at letter case transitions. For example: camelCase -> [ camel, Case ]. Defaults to `true`.",
              "type": "boolean"
            },
            "split_on_numerics": {
              "description": "If `true`, the filter splits tokens at letter-number transitions. For example: j2se -> [ j, 2, se ]. Defaults to `true`.",
              "type": "boolean"
            },
            "stem_english_possessive": {
              "description": "If `true`, the filter removes the English possessive (`'s`) from the end of each token. For example: O'Neil's -> [ O, Neil ]. Defaults to `true`.",
              "type": "boolean"
            },
            "type_table": {
              "description": "Array of custom type mappings for characters. This allows you to map non-alphanumeric characters as numeric or alphanumeric to avoid splitting on those characters.",
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "type_table_path": {
              "description": "Path to a file that contains custom type mappings for characters. This allows you to map non-alphanumeric characters as numeric or alphanumeric to avoid splitting on those characters.",
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.byte": {
      "type": "number"
    },
    "_types.mapping.AggregateMetricDoubleProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "aggregate_metric_double"
              ]
            },
            "default_metric": {
              "type": "string"
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "metrics": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "time_series_metric": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TimeSeriesMetricType"
                }
              ]
            }
          },
          "required": [
            "type",
            "default_metric",
            "metrics"
          ]
        }
      ]
    },
    "_types.mapping.AllField": {
      "type": "object",
      "properties": {
        "analyzer": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "omit_norms": {
          "type": "boolean"
        },
        "search_analyzer": {
          "type": "string"
        },
        "similarity": {
          "type": "string"
        },
        "store": {
          "type": "boolean"
        },
        "store_term_vector_offsets": {
          "type": "boolean"
        },
        "store_term_vector_payloads": {
          "type": "boolean"
        },
        "store_term_vector_positions": {
          "type": "boolean"
        },
        "store_term_vectors": {
          "type": "boolean"
        }
      },
      "required": [
        "analyzer",
        "enabled",
        "omit_norms",
        "search_analyzer",
        "similarity",
        "store",
        "store_term_vector_offsets",
        "store_term_vector_payloads",
        "store_term_vector_positions",
        "store_term_vectors"
      ]
    },
    "_types.mapping.BinaryProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "binary"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.BooleanProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "boost": {
              "type": "number"
            },
            "fielddata": {
              "allOf": [
                {
                  "$ref": "#/$defs/indices._types.NumericFielddata"
                }
              ]
            },
            "index": {
              "type": "boolean"
            },
            "null_value": {
              "type": "boolean"
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "on_script_error": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.OnScriptError"
                }
              ]
            },
            "time_series_dimension": {
              "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
              "x-state": "Technical preview",
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "boolean"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.ByteNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "byte"
              ]
            },
            "null_value": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.byte"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.ChunkRescorerChunkingSettings": {
      "type": "object",
      "properties": {
        "strategy": {
          "description": "The chunking strategy: `sentence`, `word`, `none` or `recursive`.\n\n * If `strategy` is set to `recursive`, you must also specify:\n\n- `max_chunk_size`\n- either `separators` or`separator_group`\n\nLearn more about different chunking strategies in the linked documentation.",
          "default": "sentence",
          "type": "string"
        },
        "separator_group": {
          "description": "Only applicable to the `recursive` strategy and required when using it.\n\nSets a predefined list of separators in the saved chunking settings based on the selected text type.\nValues can be `markdown` or `plaintext`.\n\nUsing this parameter is an alternative to manually specifying a custom `separators` list.",
          "type": "string"
        },
        "separators": {
          "description": "Only applicable to the `recursive` strategy and required when using it.\n\nA list of strings used as possible split points when chunking text.\n\nEach string can be a plain string or a regular expression (regex) pattern.\nThe system tries each separator in order to split the text, starting from the first item in the list.\n\nAfter splitting, it attempts to recombine smaller pieces into larger chunks that stay within\nthe `max_chunk_size` limit, to reduce the total number of chunks generated.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "max_chunk_size": {
          "description": "The maximum size of a chunk in words.\nThis value cannot be lower than `20` (for `sentence` strategy) or `10` (for `word` strategy).\nThis value should not exceed the window size for the associated model.",
          "default": 250.0,
          "type": "number"
        },
        "overlap": {
          "description": "The number of overlapping words for chunks.\nIt is applicable only to a `word` chunking strategy.\nThis value cannot be higher than half the `max_chunk_size` value.",
          "default": 100.0,
          "type": "number"
        },
        "sentence_overlap": {
          "description": "The number of overlapping sentences for chunks.\nIt is applicable only for a `sentence` chunking strategy.\nIt can be either `1` or `0`.",
          "default": 1.0,
          "type": "number"
        }
      },
      "required": [
        "max_chunk_size"
      ]
    },
    "_types.mapping.ChunkingSettings": {
      "type": "object",
      "properties": {
        "strategy": {
          "description": "The chunking strategy: `sentence`, `word`, `none` or `recursive`.\n\n * If `strategy` is set to `recursive`, you must also specify:\n\n- `max_chunk_size`\n- either `separators` or`separator_group`\n\nLearn more about different chunking strategies in the linked documentation.",
          "default": "sentence",
          "type": "string"
        },
        "separator_group": {
          "description": "Only applicable to the `recursive` strategy and required when using it.\n\nSets a predefined list of separators in the saved chunking settings based on the selected text type.\nValues can be `markdown` or `plaintext`.\n\nUsing this parameter is an alternative to manually specifying a custom `separators` list.",
          "type": "string"
        },
        "separators": {
          "description": "Only applicable to the `recursive` strategy and required when using it.\n\nA list of strings used as possible split points when chunking text.\n\nEach string can be a plain string or a regular expression (regex) pattern.\nThe system tries each separator in order to split the text, starting from the first item in the list.\n\nAfter splitting, it attempts to recombine smaller pieces into larger chunks that stay within\nthe `max_chunk_size` limit, to reduce the total number of chunks generated.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "max_chunk_size": {
          "description": "The maximum size of a chunk in words.\nThis value cannot be lower than `20` (for `sentence` strategy) or `10` (for `word` strategy).\nThis value should not exceed the window size for the associated model.",
          "default": 250.0,
          "type": "number"
        },
        "overlap": {
          "description": "The number of overlapping words for chunks.\nIt is applicable only to a `word` chunking strategy.\nThis value cannot be higher than half the `max_chunk_size` value.",
          "default": 100.0,
          "type": "number"
        },
        "sentence_overlap": {
          "description": "The number of overlapping sentences for chunks.\nIt is applicable only for a `sentence` chunking strategy.\nIt can be either `1` or `0`.",
          "default": 1.0,
          "type": "number"
        }
      },
      "required": [
        "strategy",
        "max_chunk_size"
      ]
    },
    "_types.mapping.CompletionProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "type": "string"
            },
            "contexts": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.mapping.SuggestContext"
              }
            },
            "max_input_length": {
              "type": "number"
            },
            "preserve_position_increments": {
              "type": "boolean"
            },
            "preserve_separators": {
              "type": "boolean"
            },
            "search_analyzer": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "completion"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.CompositeSubField": {
      "type": "object",
      "properties": {
        "type": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.RuntimeFieldType"
            }
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.mapping.ConstantKeywordProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "value": {
              "type": "object"
            },
            "type": {
              "type": "string",
              "enum": [
                "constant_keyword"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.CorePropertyBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "copy_to": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fields"
                }
              ]
            },
            "store": {
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.mapping.CountedKeywordProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "counted_keyword"
              ]
            },
            "index": {
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.DataStreamTimestamp": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "_types.mapping.DateNanosProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "boost": {
              "type": "number"
            },
            "format": {
              "type": "string"
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "index": {
              "type": "boolean"
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "on_script_error": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.OnScriptError"
                }
              ]
            },
            "null_value": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateTime"
                }
              ]
            },
            "precision_step": {
              "type": "number"
            },
            "type": {
              "type": "string",
              "enum": [
                "date_nanos"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.DateProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "boost": {
              "type": "number"
            },
            "fielddata": {
              "allOf": [
                {
                  "$ref": "#/$defs/indices._types.NumericFielddata"
                }
              ]
            },
            "format": {
              "type": "string"
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "index": {
              "type": "boolean"
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "on_script_error": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.OnScriptError"
                }
              ]
            },
            "null_value": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateTime"
                }
              ]
            },
            "precision_step": {
              "type": "number"
            },
            "locale": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "date"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.DateRangeProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.RangePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "format": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "date_range"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.DenseVectorElementType": {
      "type": "string",
      "enum": [
        "bit",
        "byte",
        "float",
        "bfloat16"
      ]
    },
    "_types.mapping.DenseVectorIndexOptions": {
      "type": "object",
      "properties": {
        "confidence_interval": {
          "description": "The confidence interval to use when quantizing the vectors. Can be any value between and including `0.90` and\n`1.0` or exactly `0`. When the value is `0`, this indicates that dynamic quantiles should be calculated for\noptimized quantization. When between `0.90` and `1.0`, this value restricts the values used when calculating\nthe quantization thresholds.\n\nFor example, a value of `0.95` will only use the middle `95%` of the values when calculating the quantization\nthresholds (e.g. the highest and lowest `2.5%` of values will be ignored).\n\nDefaults to `1/(dims + 1)` for `int8` quantized vectors and `0` for `int4` for dynamic quantile calculation.\n\nOnly applicable to `int8_hnsw`, `int4_hnsw`, `int8_flat`, and `int4_flat` index types.",
          "type": "number"
        },
        "ef_construction": {
          "description": "The number of candidates to track while assembling the list of nearest neighbors for each new node.\n\nOnly applicable to `hnsw`, `int8_hnsw`, `bbq_hnsw`, and `int4_hnsw` index types.",
          "default": 100.0,
          "type": "number"
        },
        "m": {
          "description": "The number of neighbors each node will be connected to in the HNSW graph.\n\nOnly applicable to `hnsw`, `int8_hnsw`, `bbq_hnsw`, and `int4_hnsw` index types.",
          "default": 16.0,
          "type": "number"
        },
        "type": {
          "description": "The type of kNN algorithm to use.\n\nSupported values include:\n  - `bbq_flat`: This utilizes a brute-force search algorithm in addition to automatically quantizing to binary vectors.\nOnly supports `element_type` of `float`.\n  - `bbq_hnsw`: This utilizes the HNSW algorithm in addition to automatic binary quantization for scalable approximate kNN\nsearch with `element_type` of `float`.\n\nThis can reduce the memory footprint by nearly 32x at the cost of some accuracy.\n  - `bbq_disk`: This utilizes the DiskBBQ algorithm, a version of Inverted Vector File (IVF) that uses BBQ to quantize vectors.\nOnly supports `element_type` of `float`.\n\nThis not only significantly reduces memory usage, but also allows for indexing and searching of very large datasets that do not fit in memory.\nUnlike HNSW, this index type loses performance gracefully as the index grows larger than memory.\n  - `flat`: This utilizes a brute-force search algorithm for exact kNN search. This supports all `element_type` values.\n  - `hnsw`: This utilizes the HNSW algorithm for scalable approximate kNN search. This supports all `element_type` values.\n  - `int4_flat`: This utilizes a brute-force search algorithm in addition to automatically half-byte scalar quantization.\nOnly supports `element_type` of `float`.\n  - `int4_hnsw`: This utilizes the HNSW algorithm in addition to automatically scalar quantization for scalable approximate kNN\nsearch with `element_type` of `float`.\n\nThis can reduce the memory footprint by 8x at the cost of some accuracy.\n  - `int8_flat`: This utilizes a brute-force search algorithm in addition to automatically scalar quantization. Only supports\n`element_type` of `float`.\n  - `int8_hnsw`: The default index type for `float` vectors. This utilizes the HNSW algorithm in addition to automatically scalar\nquantization for scalable approximate kNN search with `element_type` of `float`.\n\nThis can reduce the memory footprint by 4x at the cost of some accuracy.\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.DenseVectorIndexOptionsType"
            }
          ]
        },
        "rescore_vector": {
          "description": "The rescore vector options. This is only applicable to `bbq_disk`, `bbq_hnsw`, `int4_hnsw`, `int8_hnsw`, `bbq_flat`, `int4_flat`, and `int8_flat` index types.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.DenseVectorIndexOptionsRescoreVector"
            }
          ]
        },
        "on_disk_rescore": {
          "description": "`true` if vector rescoring should be done on-disk\n\nOnly applicable to `bbq_disk`, `bbq_hnsw`, `int4_hnsw`, `int8_hnsw`",
          "default": false,
          "x-state": "Technical preview; Added in 9.3.0",
          "type": "boolean"
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.mapping.DenseVectorIndexOptionsRescoreVector": {
      "type": "object",
      "properties": {
        "oversample": {
          "description": "The oversampling factor to use when searching for the nearest neighbor. This is only applicable to the quantized formats: `bbq_*`, `int4_*`, and `int8_*`.\nWhen provided, `oversample * k` vectors will be gathered and then their scores will be re-computed with the original vectors.\n\nvalid values are between `1.0` and `10.0` (inclusive), or `0` exactly to disable oversampling.",
          "type": "number"
        }
      },
      "required": [
        "oversample"
      ]
    },
    "_types.mapping.DenseVectorIndexOptionsType": {
      "type": "string",
      "enum": [
        "bbq_flat",
        "bbq_hnsw",
        "bbq_disk",
        "flat",
        "hnsw",
        "int4_flat",
        "int4_hnsw",
        "int8_flat",
        "int8_hnsw"
      ]
    },
    "_types.mapping.DenseVectorProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "dense_vector"
              ]
            },
            "dims": {
              "description": "Number of vector dimensions. Can't exceed `4096`. If `dims` is not specified, it will be set to the length of\nthe first vector added to the field.",
              "type": "number"
            },
            "element_type": {
              "description": "The data type used to encode vectors. The supported data types are `float` (default), `byte`, and `bit`.\n\nSupported values include:\n  - `bit`: Indexes a single bit per dimension. Useful for very high-dimensional vectors or models that specifically support\nbit vectors.\n\nNOTE: when using `bit`, the number of dimensions must be a multiple of `8` and must represent the number of bits.\n  - `byte`: Indexes a 1-byte integer value per dimension.\n  - `float`: Indexes a 4-byte floating-point value per dimension.\n  - `bfloat16`: Indexes a 2-byte floating-point value per dimension.\n\n",
              "default": "float",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.DenseVectorElementType"
                }
              ]
            },
            "index": {
              "description": "If `true`, you can search this field using the kNN search API.",
              "default": true,
              "type": "boolean"
            },
            "index_options": {
              "description": "An optional section that configures the kNN indexing algorithm. The HNSW algorithm has two internal parameters\nthat influence how the data structure is built. These can be adjusted to improve the accuracy of results, at the\nexpense of slower indexing speed.\n\nThis parameter can only be specified when `index` is `true`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.DenseVectorIndexOptions"
                }
              ]
            },
            "similarity": {
              "description": "The vector similarity metric to use in kNN search.\n\nDocuments are ranked by their vector field's similarity to the query vector. The `_score` of each document will\nbe derived from the similarity, in a way that ensures scores are positive and that a larger score corresponds\nto a higher ranking.\n\nDefaults to `l2_norm` when `element_type` is `bit` otherwise defaults to `cosine`.\n\n`bit` vectors only support `l2_norm` as their similarity metric.\n\nThis parameter can only be specified when `index` is `true`.\n\nSupported values include:\n  - `cosine`: Computes the cosine similarity. During indexing Elasticsearch automatically normalizes vectors with `cosine`\nsimilarity to unit length. This allows to internally use `dot_product` for computing similarity, which is more\nefficient. Original un-normalized vectors can be still accessed through scripts.\n\nThe document `_score` is computed as `(1 + cosine(query, vector)) / 2`.\n\nThe `cosine` similarity does not allow vectors with zero magnitude, since cosine is not defined in this case.\n  - `dot_product`: Computes the dot product of two unit vectors. This option provides an optimized way to perform cosine similarity.\nThe constraints and computed score are defined by `element_type`.\n\nWhen `element_type` is `float`, all vectors must be unit length, including both document and query vectors.\n\nThe document `_score` is computed as `(1 + dot_product(query, vector)) / 2`.\n\nWhen `element_type` is `byte`, all vectors must have the same length including both document and query vectors or\nresults will be inaccurate.\n\nThe document `_score` is computed as `0.5 + (dot_product(query, vector) / (32768 * dims))` where `dims` is the\nnumber of dimensions per vector.\n  - `l2_norm`: Computes similarity based on the `L2` distance (also known as Euclidean distance) between the vectors.\n\nThe document `_score` is computed as `1 / (1 + l2_norm(query, vector)^2)`.\n\nFor `bit` vectors, instead of using `l2_norm`, the `hamming` distance between the vectors is used.\n\nThe `_score` transformation is `(numBits - hamming(a, b)) / numBits`.\n  - `max_inner_product`: Computes the maximum inner product of two vectors. This is similar to `dot_product`, but doesn't require vectors\nto be normalized. This means that each vector’s magnitude can significantly effect the score.\n\nThe document `_score` is adjusted to prevent negative values. For `max_inner_product` values `< 0`, the `_score`\nis `1 / (1 + -1 * max_inner_product(query, vector))`. For non-negative `max_inner_product` results the `_score`\nis calculated `max_inner_product(query, vector) + 1`.\n\n",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.DenseVectorSimilarity"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.DenseVectorSimilarity": {
      "type": "string",
      "enum": [
        "cosine",
        "dot_product",
        "l2_norm",
        "max_inner_product"
      ]
    },
    "_types.mapping.DocValuesPropertyBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.CorePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "doc_values": {
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.mapping.DoubleNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "double"
              ]
            },
            "null_value": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.DoubleRangeProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.RangePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "double_range"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.DynamicMapping": {
      "type": "string",
      "enum": [
        "strict",
        "runtime",
        "true",
        "false"
      ]
    },
    "_types.mapping.DynamicProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "{dynamic_type}"
              ]
            },
            "enabled": {
              "type": "boolean"
            },
            "null_value": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.FieldValue"
                }
              ]
            },
            "boost": {
              "type": "number"
            },
            "coerce": {
              "type": "boolean"
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "on_script_error": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.OnScriptError"
                }
              ]
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "time_series_metric": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TimeSeriesMetricType"
                }
              ]
            },
            "analyzer": {
              "type": "string"
            },
            "eager_global_ordinals": {
              "type": "boolean"
            },
            "index": {
              "type": "boolean"
            },
            "index_options": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.IndexOptions"
                }
              ]
            },
            "index_phrases": {
              "type": "boolean"
            },
            "index_prefixes": {
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TextIndexPrefixes"
                },
                {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              ]
            },
            "norms": {
              "type": "boolean"
            },
            "position_increment_gap": {
              "type": "number"
            },
            "search_analyzer": {
              "type": "string"
            },
            "search_quote_analyzer": {
              "type": "string"
            },
            "term_vector": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TermVectorOption"
                }
              ]
            },
            "format": {
              "type": "string"
            },
            "precision_step": {
              "type": "number"
            },
            "locale": {
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.DynamicTemplate": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "match": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "path_match": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "unmatch": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "path_unmatch": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "match_mapping_type": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "unmatch_mapping_type": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              ]
            },
            "match_pattern": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.MatchType"
                }
              ]
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "mapping": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.Property"
                }
              ]
            },
            "runtime": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.RuntimeField"
                }
              ]
            }
          },
          "minProperties": 1,
          "maxProperties": 1
        }
      ]
    },
    "_types.mapping.ExponentialHistogramProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "time_series_metric": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TimeSeriesMetricType"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "exponential_histogram"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.FieldAliasProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "path": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "alias"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.FieldNamesField": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "_types.mapping.FlattenedProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "boost": {
              "type": "number"
            },
            "depth_limit": {
              "type": "number"
            },
            "doc_values": {
              "type": "boolean"
            },
            "eager_global_ordinals": {
              "type": "boolean"
            },
            "index": {
              "type": "boolean"
            },
            "index_options": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.IndexOptions"
                }
              ]
            },
            "null_value": {
              "type": "string"
            },
            "similarity": {
              "type": "string"
            },
            "split_queries_on_whitespace": {
              "type": "boolean"
            },
            "time_series_dimensions": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "type": {
              "type": "string",
              "enum": [
                "flattened"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.FloatNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "float"
              ]
            },
            "null_value": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.FloatRangeProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.RangePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "float_range"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.GeoOrientation": {
      "type": "string",
      "enum": [
        "right",
        "RIGHT",
        "counterclockwise",
        "ccw",
        "left",
        "LEFT",
        "clockwise",
        "cw"
      ]
    },
    "_types.mapping.GeoPointMetricType": {
      "type": "string",
      "enum": [
        "gauge",
        "counter",
        "position"
      ]
    },
    "_types.mapping.GeoPointProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "ignore_malformed": {
              "type": "boolean"
            },
            "ignore_z_value": {
              "type": "boolean"
            },
            "null_value": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoLocation"
                }
              ]
            },
            "index": {
              "type": "boolean"
            },
            "on_script_error": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.OnScriptError"
                }
              ]
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "geo_point"
              ]
            },
            "time_series_metric": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.GeoPointMetricType"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.GeoShapeProperty": {
      "description": "The `geo_shape` data type facilitates the indexing of and searching with arbitrary geo shapes such as rectangles\nand polygons.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "coerce": {
              "type": "boolean"
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "ignore_z_value": {
              "type": "boolean"
            },
            "index": {
              "type": "boolean"
            },
            "orientation": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.GeoOrientation"
                }
              ]
            },
            "strategy": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.GeoStrategy"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "geo_shape"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.GeoStrategy": {
      "type": "string",
      "enum": [
        "recursive",
        "term"
      ]
    },
    "_types.mapping.HalfFloatNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "half_float"
              ]
            },
            "null_value": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.HistogramProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "ignore_malformed": {
              "type": "boolean"
            },
            "time_series_metric": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TimeSeriesMetricType"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "histogram"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.IcuCollationProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "icu_collation_keyword"
              ]
            },
            "norms": {
              "type": "boolean"
            },
            "index_options": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.IndexOptions"
                }
              ]
            },
            "index": {
              "description": "Should the field be searchable?",
              "type": "boolean"
            },
            "null_value": {
              "description": "Accepts a string value which is substituted for any explicit null values. Defaults to null, which means the field is treated as missing.",
              "type": "string"
            },
            "rules": {
              "type": "string"
            },
            "language": {
              "type": "string"
            },
            "country": {
              "type": "string"
            },
            "variant": {
              "type": "string"
            },
            "strength": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuCollationStrength"
                }
              ]
            },
            "decomposition": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuCollationDecomposition"
                }
              ]
            },
            "alternate": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuCollationAlternate"
                }
              ]
            },
            "case_level": {
              "type": "boolean"
            },
            "case_first": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.IcuCollationCaseFirst"
                }
              ]
            },
            "numeric": {
              "type": "boolean"
            },
            "variable_top": {
              "type": "string"
            },
            "hiragana_quaternary_mode": {
              "type": "boolean"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.IndexField": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "_types.mapping.IndexOptions": {
      "type": "string",
      "enum": [
        "docs",
        "freqs",
        "positions",
        "offsets"
      ]
    },
    "_types.mapping.IntegerNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "integer"
              ]
            },
            "null_value": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.IntegerRangeProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.RangePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "integer_range"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.IpProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "boost": {
              "type": "number"
            },
            "index": {
              "type": "boolean"
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "null_value": {
              "type": "string"
            },
            "on_script_error": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.OnScriptError"
                }
              ]
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "time_series_dimension": {
              "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
              "x-state": "Technical preview",
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "ip"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.IpRangeProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.RangePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "ip_range"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.JoinProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "relations": {
              "type": "object",
              "additionalProperties": {
                "oneOf": [
                  {
                    "$ref": "#/$defs/_types.RelationName"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/$defs/_types.RelationName"
                    }
                  }
                ]
              }
            },
            "eager_global_ordinals": {
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "join"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.KeywordProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "boost": {
              "type": "number"
            },
            "eager_global_ordinals": {
              "type": "boolean"
            },
            "index": {
              "type": "boolean"
            },
            "index_options": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.IndexOptions"
                }
              ]
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "on_script_error": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.OnScriptError"
                }
              ]
            },
            "normalizer": {
              "type": "string"
            },
            "norms": {
              "type": "boolean"
            },
            "null_value": {
              "type": "string"
            },
            "similarity": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              ]
            },
            "split_queries_on_whitespace": {
              "type": "boolean"
            },
            "time_series_dimension": {
              "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
              "x-state": "Technical preview",
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "keyword"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.LongNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "long"
              ]
            },
            "null_value": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.LongRangeProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.RangePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "long_range"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.MatchOnlyTextProperty": {
      "description": "A variant of text that trades scoring and efficiency of positional queries for space efficiency. This field\neffectively stores data the same way as a text field that only indexes documents (index_options: docs) and\ndisables norms (norms: false). Term queries perform as fast if not faster as on text fields, however queries\nthat need positions such as the match_phrase query perform slower as they need to look at the _source document\nto verify whether a phrase matches. All queries return constant scores that are equal to 1.0.",
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "match_only_text"
          ]
        },
        "fields": {
          "description": "Multi-fields allow the same string value to be indexed in multiple ways for different purposes, such as one\nfield for search and a multi-field for sorting and aggregations, or the same string value analyzed by different analyzers.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.mapping.Property"
          }
        },
        "meta": {
          "description": "Metadata about the field.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "copy_to": {
          "description": "Allows you to copy the values of multiple fields into a group\nfield, which can then be queried as a single field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Fields"
            }
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.mapping.MatchType": {
      "type": "string",
      "enum": [
        "simple",
        "regex"
      ]
    },
    "_types.mapping.Murmur3HashProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "murmur3"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.NestedProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.CorePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "include_in_parent": {
              "type": "boolean"
            },
            "include_in_root": {
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "nested"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.NumberPropertyBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "boost": {
              "type": "number"
            },
            "coerce": {
              "type": "boolean"
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "index": {
              "type": "boolean"
            },
            "on_script_error": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.OnScriptError"
                }
              ]
            },
            "script": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "time_series_metric": {
              "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
              "x-state": "Technical preview",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TimeSeriesMetricType"
                }
              ]
            },
            "time_series_dimension": {
              "description": "For internal use by Elastic only. Marks the field as a time series dimension. Defaults to false.",
              "default": false,
              "x-state": "Technical preview",
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.mapping.ObjectProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.CorePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "enabled": {
              "type": "boolean"
            },
            "subobjects": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.Subobjects"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "object"
              ]
            }
          }
        }
      ]
    },
    "_types.mapping.OnScriptError": {
      "type": "string",
      "enum": [
        "fail",
        "continue"
      ]
    },
    "_types.mapping.PassthroughObjectProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.CorePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "passthrough"
              ]
            },
            "enabled": {
              "type": "boolean"
            },
            "priority": {
              "type": "number"
            },
            "time_series_dimension": {
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.mapping.PercolatorProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "percolator"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.PointProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "ignore_malformed": {
              "type": "boolean"
            },
            "ignore_z_value": {
              "type": "boolean"
            },
            "null_value": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "point"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.Property": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.mapping.BinaryProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.BooleanProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.DynamicProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.JoinProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.KeywordProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.MatchOnlyTextProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.PercolatorProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.RankFeatureProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.RankFeaturesProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.SearchAsYouTypeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.TextProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.VersionProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.WildcardProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.DateNanosProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.DateProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.AggregateMetricDoubleProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.DenseVectorProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.FlattenedProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.NestedProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.ObjectProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.PassthroughObjectProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.RankVectorProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.SemanticTextProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.SparseVectorProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.CompletionProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.ConstantKeywordProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.CountedKeywordProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.FieldAliasProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.HistogramProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.ExponentialHistogramProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.IpProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.Murmur3HashProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.TokenCountProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.GeoPointProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.GeoShapeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.PointProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.ShapeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.ByteNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.DoubleNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.FloatNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.HalfFloatNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.IntegerNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.LongNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.ScaledFloatNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.ShortNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.UnsignedLongNumberProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.DateRangeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.DoubleRangeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.FloatRangeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.IntegerRangeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.IpRangeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.LongRangeProperty"
        },
        {
          "$ref": "#/$defs/_types.mapping.IcuCollationProperty"
        }
      ]
    },
    "_types.mapping.PropertyBase": {
      "type": "object",
      "properties": {
        "meta": {
          "description": "Metadata about the field.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.mapping.Property"
          }
        },
        "ignore_above": {
          "type": "number"
        },
        "dynamic": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.DynamicMapping"
            }
          ]
        },
        "fields": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.mapping.Property"
          }
        },
        "synthetic_source_keep": {
          "description": "\n\nSupported values include:\n  - `none`: Synthetic source diverges from the original source (default)\n  - `arrays`: Arrays of the corresponding field or object preserve the original element ordering and duplicate elements.\nThe synthetic source fragment for such arrays is not guaranteed to match the original source exactly,\ne.g. array [1, 2, [5], [[4, [3]]], 5] may appear as-is or in an equivalent format like [1, 2, 5, 4, 3, 5].\nThe exact format may change in the future, in an effort to reduce the storage overhead of this option.\n  - `all`: The source for both singleton instances and arrays of the corresponding field or object gets recorded.\nWhen applied to objects, the source of all sub-objects and sub-fields gets captured.\nFurthermore, the original source of arrays gets captured and appears in synthetic source with no modifications.\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.SyntheticSourceKeepEnum"
            }
          ]
        }
      }
    },
    "_types.mapping.RangePropertyBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "boost": {
              "type": "number"
            },
            "coerce": {
              "type": "boolean"
            },
            "index": {
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.mapping.RankFeatureProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "positive_score_impact": {
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "rank_feature"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.RankFeaturesProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "positive_score_impact": {
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "rank_features"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.RankVectorElementType": {
      "type": "string",
      "enum": [
        "byte",
        "float",
        "bit"
      ]
    },
    "_types.mapping.RankVectorProperty": {
      "description": "Technical preview",
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "rank_vectors"
              ]
            },
            "element_type": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.RankVectorElementType"
                }
              ]
            },
            "dims": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.RoutingField": {
      "type": "object",
      "properties": {
        "required": {
          "type": "boolean"
        }
      },
      "required": [
        "required"
      ]
    },
    "_types.mapping.RuntimeField": {
      "type": "object",
      "properties": {
        "fields": {
          "description": "For type `composite`",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.mapping.CompositeSubField"
          }
        },
        "fetch_fields": {
          "description": "For type `lookup`",
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.mapping.RuntimeFieldFetchFields"
          }
        },
        "format": {
          "description": "A custom format for `date` type runtime fields.",
          "type": "string"
        },
        "input_field": {
          "description": "For type `lookup`",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "target_field": {
          "description": "For type `lookup`",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "target_index": {
          "description": "For type `lookup`",
          "allOf": [
            {
              "$ref": "#/$defs/_types.IndexName"
            }
          ]
        },
        "script": {
          "description": "Painless script executed at query time.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        },
        "type": {
          "description": "Field type, which can be: `boolean`, `composite`, `date`, `double`, `geo_point`, `ip`,`keyword`, `long`, or `lookup`.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.RuntimeFieldType"
            }
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.mapping.RuntimeFieldFetchFields": {
      "type": "object",
      "properties": {
        "field": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "format": {
          "type": "string"
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.mapping.RuntimeFieldType": {
      "type": "string",
      "enum": [
        "boolean",
        "composite",
        "date",
        "double",
        "geo_point",
        "geo_shape",
        "ip",
        "keyword",
        "long",
        "lookup"
      ]
    },
    "_types.mapping.RuntimeFields": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/_types.mapping.RuntimeField"
      }
    },
    "_types.mapping.ScaledFloatNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "scaled_float"
              ]
            },
            "null_value": {
              "type": "number"
            },
            "scaling_factor": {
              "type": "number"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.SearchAsYouTypeProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.CorePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "type": "string"
            },
            "index": {
              "type": "boolean"
            },
            "index_options": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.IndexOptions"
                }
              ]
            },
            "max_shingle_size": {
              "type": "number"
            },
            "norms": {
              "type": "boolean"
            },
            "search_analyzer": {
              "type": "string"
            },
            "search_quote_analyzer": {
              "type": "string"
            },
            "similarity": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              ]
            },
            "term_vector": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TermVectorOption"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "search_as_you_type"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.SemanticTextIndexOptions": {
      "type": "object",
      "properties": {
        "dense_vector": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.DenseVectorIndexOptions"
            }
          ]
        },
        "sparse_vector": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.SparseVectorIndexOptions"
            }
          ]
        }
      }
    },
    "_types.mapping.SemanticTextProperty": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "semantic_text"
          ]
        },
        "meta": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "inference_id": {
          "description": "Inference endpoint that will be used to generate embeddings for the field.\nThis parameter cannot be updated. Use the Create inference API to create the endpoint.\nIf `search_inference_id` is specified, the inference endpoint will only be used at index time.",
          "default": ".elser-2-elasticsearch",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        },
        "search_inference_id": {
          "description": "Inference endpoint that will be used to generate embeddings at query time.\nYou can update this parameter by using the Update mapping API. Use the Create inference API to create the endpoint.\nIf not specified, the inference endpoint defined by inference_id will be used at both index and query time.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        },
        "index_options": {
          "description": "Settings for index_options that override any defaults used by semantic_text, for example\nspecific quantization settings.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.SemanticTextIndexOptions"
            }
          ]
        },
        "chunking_settings": {
          "description": "Settings for chunking text into smaller passages. If specified, these will override the\nchunking settings sent in the inference endpoint associated with inference_id. If chunking settings are updated,\nthey will not be applied to existing documents until they are reindexed.",
          "oneOf": [
            {
              "$ref": "#/$defs/_types.mapping.ChunkingSettings"
            },
            {
              "type": [
                "string",
                "null"
              ]
            }
          ]
        },
        "fields": {
          "description": "Multi-fields allow the same string value to be indexed in multiple ways for different purposes, such as one\nfield for search and a multi-field for sorting and aggregations, or the same string value analyzed by different analyzers.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.mapping.Property"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "_types.mapping.ShapeProperty": {
      "description": "The `shape` data type facilitates the indexing of and searching with arbitrary `x, y` cartesian shapes such as\nrectangles and polygons.",
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "coerce": {
              "type": "boolean"
            },
            "ignore_malformed": {
              "type": "boolean"
            },
            "ignore_z_value": {
              "type": "boolean"
            },
            "orientation": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.GeoOrientation"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "shape"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.ShortNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "short"
              ]
            },
            "null_value": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.short"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.SizeField": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "_types.mapping.SourceField": {
      "type": "object",
      "properties": {
        "compress": {
          "type": "boolean"
        },
        "compress_threshold": {
          "type": "string"
        },
        "enabled": {
          "type": "boolean"
        },
        "excludes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "includes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "mode": {
          "description": "\n\nSupported values include:\n  - `disabled`\n  - `stored`\n  - `synthetic`: Instead of storing source documents on disk exactly as you send them,\n Elasticsearch can reconstruct source content on the fly upon retrieval.\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.SourceFieldMode"
            }
          ]
        }
      }
    },
    "_types.mapping.SourceFieldMode": {
      "type": "string",
      "enum": [
        "disabled",
        "stored",
        "synthetic"
      ]
    },
    "_types.mapping.SparseVectorIndexOptions": {
      "type": "object",
      "properties": {
        "prune": {
          "description": "Whether to perform pruning, omitting the non-significant tokens from the query to improve query performance.\nIf prune is true but the pruning_config is not specified, pruning will occur but default values will be used.\nDefault: false",
          "x-state": "Generally available; Added in 8.19.0",
          "type": "boolean"
        },
        "pruning_config": {
          "description": "Optional pruning configuration.\nIf enabled, this will omit non-significant tokens from the query in order to improve query performance.\nThis is only used if prune is set to true.\nIf prune is set to true but pruning_config is not specified, default values will be used.",
          "x-state": "Generally available; Added in 8.19.0",
          "allOf": [
            {
              "$ref": "#/$defs/_types.TokenPruningConfig"
            }
          ]
        }
      }
    },
    "_types.mapping.SparseVectorProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.PropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "store": {
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "sparse_vector"
              ]
            },
            "index_options": {
              "description": "Additional index options for the sparse vector field that controls the\ntoken pruning behavior of the sparse vector field.",
              "x-state": "Generally available; Added in 8.19.0",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.SparseVectorIndexOptions"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.Subobjects": {
      "type": "string",
      "enum": [
        "true",
        "false"
      ]
    },
    "_types.mapping.SuggestContext": {
      "type": "object",
      "properties": {
        "name": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Name"
            }
          ]
        },
        "path": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "type": {
          "type": "string"
        },
        "precision": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ]
        }
      },
      "required": [
        "name",
        "type"
      ]
    },
    "_types.mapping.SyntheticSourceKeepEnum": {
      "type": "string",
      "enum": [
        "none",
        "arrays",
        "all"
      ]
    },
    "_types.mapping.TermVectorOption": {
      "type": "string",
      "enum": [
        "no",
        "yes",
        "with_offsets",
        "with_positions",
        "with_positions_offsets",
        "with_positions_offsets_payloads",
        "with_positions_payloads"
      ]
    },
    "_types.mapping.TextIndexPrefixes": {
      "type": "object",
      "properties": {
        "max_chars": {
          "type": "number"
        },
        "min_chars": {
          "type": "number"
        }
      },
      "required": [
        "max_chars",
        "min_chars"
      ]
    },
    "_types.mapping.TextProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.CorePropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "type": "string"
            },
            "boost": {
              "type": "number"
            },
            "eager_global_ordinals": {
              "type": "boolean"
            },
            "fielddata": {
              "type": "boolean"
            },
            "fielddata_frequency_filter": {
              "allOf": [
                {
                  "$ref": "#/$defs/indices._types.FielddataFrequencyFilter"
                }
              ]
            },
            "index": {
              "type": "boolean"
            },
            "index_options": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.IndexOptions"
                }
              ]
            },
            "index_phrases": {
              "type": "boolean"
            },
            "index_prefixes": {
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TextIndexPrefixes"
                },
                {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              ]
            },
            "norms": {
              "type": "boolean"
            },
            "position_increment_gap": {
              "type": "number"
            },
            "search_analyzer": {
              "type": "string"
            },
            "search_quote_analyzer": {
              "type": "string"
            },
            "similarity": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              ]
            },
            "term_vector": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.mapping.TermVectorOption"
                }
              ]
            },
            "type": {
              "type": "string",
              "enum": [
                "text"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.TimeSeriesMetricType": {
      "type": "string",
      "enum": [
        "gauge",
        "counter",
        "summary",
        "histogram",
        "position"
      ]
    },
    "_types.mapping.TokenCountProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "type": "string"
            },
            "boost": {
              "type": "number"
            },
            "index": {
              "type": "boolean"
            },
            "null_value": {
              "type": "number"
            },
            "enable_position_increments": {
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "enum": [
                "token_count"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.TypeMapping": {
      "type": "object",
      "properties": {
        "all_field": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.AllField"
            }
          ]
        },
        "date_detection": {
          "type": "boolean"
        },
        "dynamic": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.DynamicMapping"
            }
          ]
        },
        "dynamic_date_formats": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "dynamic_templates": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/$defs/_types.mapping.DynamicTemplate"
            },
            "minProperties": 1,
            "maxProperties": 1
          }
        },
        "_field_names": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.FieldNamesField"
            }
          ]
        },
        "index_field": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.IndexField"
            }
          ]
        },
        "_meta": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Metadata"
            }
          ]
        },
        "numeric_detection": {
          "type": "boolean"
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.mapping.Property"
          }
        },
        "_routing": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.RoutingField"
            }
          ]
        },
        "_size": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.SizeField"
            }
          ]
        },
        "_source": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.SourceField"
            }
          ]
        },
        "runtime": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.mapping.RuntimeField"
          }
        },
        "enabled": {
          "type": "boolean"
        },
        "subobjects": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.Subobjects"
            }
          ]
        },
        "_data_stream_timestamp": {
          "x-state": "Generally available; Added in 7.16.0",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.DataStreamTimestamp"
            }
          ]
        }
      }
    },
    "_types.mapping.UnsignedLongNumberProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.NumberPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "unsigned_long"
              ]
            },
            "null_value": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.ulong"
                }
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.VersionProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "version"
              ]
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.mapping.WildcardProperty": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.mapping.DocValuesPropertyBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "enum": [
                "wildcard"
              ]
            },
            "null_value": {
              "x-state": "Generally available; Added in 7.15.0",
              "type": "string"
            }
          },
          "required": [
            "type"
          ]
        }
      ]
    },
    "_types.query_dsl.BoolQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "filter": {
              "description": "The clause (query) must appear in matching documents.\nHowever, unlike `must`, the score of the query will be ignored.",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                  }
                }
              ]
            },
            "minimum_should_match": {
              "description": "Specifies the number or percentage of `should` clauses returned documents must match.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "must": {
              "description": "The clause (query) must appear in matching documents and will contribute to the score.",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                  }
                }
              ]
            },
            "must_not": {
              "description": "The clause (query) must not appear in the matching documents.\nBecause scoring is ignored, a score of `0` is returned for all documents.",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                  }
                }
              ]
            },
            "should": {
              "description": "The clause (query) should appear in the matching document.",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                  }
                }
              ]
            }
          }
        }
      ]
    },
    "_types.query_dsl.BoostingQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "negative_boost": {
              "description": "Floating point number between 0 and 1.0 used to decrease the relevance scores of documents matching the `negative` query.",
              "type": "number"
            },
            "negative": {
              "description": "Query used to decrease the relevance score of matching documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "positive": {
              "description": "Any returned documents must match this query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            }
          },
          "required": [
            "negative_boost",
            "negative",
            "positive"
          ]
        }
      ]
    },
    "_types.query_dsl.ChildScoreMode": {
      "type": "string",
      "enum": [
        "none",
        "avg",
        "sum",
        "max",
        "min"
      ]
    },
    "_types.query_dsl.CombinedFieldsOperator": {
      "type": "string",
      "enum": [
        "or",
        "and"
      ]
    },
    "_types.query_dsl.CombinedFieldsQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "fields": {
              "description": "List of fields to search. Field wildcard patterns are allowed. Only `text` fields are supported, and they must all have the same search `analyzer`.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.Field"
              }
            },
            "query": {
              "description": "Text to search for in the provided `fields`.\nThe `combined_fields` query analyzes the provided text before performing a search.",
              "type": "string"
            },
            "auto_generate_synonyms_phrase_query": {
              "description": "If true, match phrase queries are automatically created for multi-term synonyms.",
              "default": true,
              "type": "boolean"
            },
            "operator": {
              "description": "Boolean logic used to interpret text in the query value.",
              "default": "or",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.CombinedFieldsOperator"
                }
              ]
            },
            "minimum_should_match": {
              "description": "Minimum number of clauses that must match for a document to be returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "zero_terms_query": {
              "description": "Indicates whether no documents are returned if the analyzer removes all tokens, such as when using a `stop` filter.\n\nSupported values include:\n  - `none`: No documents are returned if the analyzer removes all tokens.\n  - `all`: Returns all documents, similar to a `match_all` query.\n\n",
              "default": "none",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.CombinedFieldsZeroTerms"
                }
              ]
            }
          },
          "required": [
            "fields",
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.CombinedFieldsZeroTerms": {
      "type": "string",
      "enum": [
        "none",
        "all"
      ]
    },
    "_types.query_dsl.CommonTermsQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "type": "string"
            },
            "cutoff_frequency": {
              "type": "number"
            },
            "high_freq_operator": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Operator"
                }
              ]
            },
            "low_freq_operator": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Operator"
                }
              ]
            },
            "minimum_should_match": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "query": {
              "type": "string"
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.ConstantScoreQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "filter": {
              "description": "Filter query you wish to run. Any returned documents must match this query.\nFilter queries do not calculate relevance scores.\nTo speed up performance, Elasticsearch automatically caches frequently used filter queries.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            }
          },
          "required": [
            "filter"
          ]
        }
      ]
    },
    "_types.query_dsl.DateDecayFunction": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.DecayFunctionBaseDateMathDuration"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.DateDistanceFeatureQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.DistanceFeatureQueryBaseDateMathDuration"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.DateRangeQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.RangeQueryBaseDateMath"
        },
        {
          "type": "object",
          "properties": {
            "format": {
              "description": "Date format used to convert `date` values in the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateFormat"
                }
              ]
            },
            "time_zone": {
              "description": "Coordinated Universal Time (UTC) offset or IANA time zone used to convert `date` values in the query to UTC.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TimeZone"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.query_dsl.DecayFunction": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.UntypedDecayFunction"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.DateDecayFunction"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.NumericDecayFunction"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.GeoDecayFunction"
        }
      ]
    },
    "_types.query_dsl.DecayFunctionBase": {
      "type": "object",
      "properties": {
        "multi_value_mode": {
          "description": "Determines how the distance is calculated when a field used for computing the decay contains multiple values.\n\nSupported values include:\n  - `min`: Distance is the minimum distance.\n  - `max`: Distance is the maximum distance.\n  - `avg`: Distance is the average distance.\n  - `sum`: Distance is the sum of all distances.\n\n",
          "default": "min",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.MultiValueMode"
            }
          ]
        }
      }
    },
    "_types.query_dsl.DecayFunctionBaseDateMathDuration": {
      "type": "object",
      "properties": {
        "multi_value_mode": {
          "description": "Determines how the distance is calculated when a field used for computing the decay contains multiple values.\n\nSupported values include:\n  - `min`: Distance is the minimum distance.\n  - `max`: Distance is the maximum distance.\n  - `avg`: Distance is the average distance.\n  - `sum`: Distance is the sum of all distances.\n\n",
          "default": "min",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.MultiValueMode"
            }
          ]
        }
      }
    },
    "_types.query_dsl.DecayFunctionBaseGeoLocationDistance": {
      "type": "object",
      "properties": {
        "multi_value_mode": {
          "description": "Determines how the distance is calculated when a field used for computing the decay contains multiple values.\n\nSupported values include:\n  - `min`: Distance is the minimum distance.\n  - `max`: Distance is the maximum distance.\n  - `avg`: Distance is the average distance.\n  - `sum`: Distance is the sum of all distances.\n\n",
          "default": "min",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.MultiValueMode"
            }
          ]
        }
      }
    },
    "_types.query_dsl.DecayFunctionBasedoubledouble": {
      "type": "object",
      "properties": {
        "multi_value_mode": {
          "description": "Determines how the distance is calculated when a field used for computing the decay contains multiple values.\n\nSupported values include:\n  - `min`: Distance is the minimum distance.\n  - `max`: Distance is the maximum distance.\n  - `avg`: Distance is the average distance.\n  - `sum`: Distance is the sum of all distances.\n\n",
          "default": "min",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.MultiValueMode"
            }
          ]
        }
      }
    },
    "_types.query_dsl.DisMaxQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "queries": {
              "description": "One or more query clauses.\nReturned documents must match one or more of these queries.\nIf a document matches multiple queries, Elasticsearch uses the highest relevance score.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.query_dsl.QueryContainer"
              }
            },
            "tie_breaker": {
              "description": "Floating point number between 0 and 1.0 used to increase the relevance scores of documents matching multiple query clauses.",
              "default": 0.0,
              "type": "number"
            }
          },
          "required": [
            "queries"
          ]
        }
      ]
    },
    "_types.query_dsl.DistanceFeatureQuery": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.UntypedDistanceFeatureQuery"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.GeoDistanceFeatureQuery"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.DateDistanceFeatureQuery"
        }
      ]
    },
    "_types.query_dsl.DistanceFeatureQueryBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "origin": {
              "description": "Date or point of origin used to calculate distances.\nIf the `field` value is a `date` or `date_nanos` field, the `origin` value must be a date.\nDate Math, such as `now-1h`, is supported.\nIf the field value is a `geo_point` field, the `origin` value must be a geopoint.",
              "type": "object"
            },
            "pivot": {
              "description": "Distance from the `origin` at which relevance scores receive half of the `boost` value.\nIf the `field` value is a `date` or `date_nanos` field, the `pivot` value must be a time unit, such as `1h` or `10d`. If the `field` value is a `geo_point` field, the `pivot` value must be a distance unit, such as `1km` or `12m`.",
              "type": "object"
            },
            "field": {
              "description": "Name of the field used to calculate distances. This field must meet the following criteria:\nbe a `date`, `date_nanos` or `geo_point` field;\nhave an `index` mapping parameter value of `true`, which is the default;\nhave an `doc_values` mapping parameter value of `true`, which is the default.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            }
          },
          "required": [
            "origin",
            "pivot",
            "field"
          ]
        }
      ]
    },
    "_types.query_dsl.DistanceFeatureQueryBaseDateMathDuration": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "origin": {
              "description": "Date or point of origin used to calculate distances.\nIf the `field` value is a `date` or `date_nanos` field, the `origin` value must be a date.\nDate Math, such as `now-1h`, is supported.\nIf the field value is a `geo_point` field, the `origin` value must be a geopoint.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateMath"
                }
              ]
            },
            "pivot": {
              "description": "Distance from the `origin` at which relevance scores receive half of the `boost` value.\nIf the `field` value is a `date` or `date_nanos` field, the `pivot` value must be a time unit, such as `1h` or `10d`. If the `field` value is a `geo_point` field, the `pivot` value must be a distance unit, such as `1km` or `12m`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Duration"
                }
              ]
            },
            "field": {
              "description": "Name of the field used to calculate distances. This field must meet the following criteria:\nbe a `date`, `date_nanos` or `geo_point` field;\nhave an `index` mapping parameter value of `true`, which is the default;\nhave an `doc_values` mapping parameter value of `true`, which is the default.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            }
          },
          "required": [
            "origin",
            "pivot",
            "field"
          ]
        }
      ]
    },
    "_types.query_dsl.DistanceFeatureQueryBaseGeoLocationDistance": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "origin": {
              "description": "Date or point of origin used to calculate distances.\nIf the `field` value is a `date` or `date_nanos` field, the `origin` value must be a date.\nDate Math, such as `now-1h`, is supported.\nIf the field value is a `geo_point` field, the `origin` value must be a geopoint.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoLocation"
                }
              ]
            },
            "pivot": {
              "description": "Distance from the `origin` at which relevance scores receive half of the `boost` value.\nIf the `field` value is a `date` or `date_nanos` field, the `pivot` value must be a time unit, such as `1h` or `10d`. If the `field` value is a `geo_point` field, the `pivot` value must be a distance unit, such as `1km` or `12m`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Distance"
                }
              ]
            },
            "field": {
              "description": "Name of the field used to calculate distances. This field must meet the following criteria:\nbe a `date`, `date_nanos` or `geo_point` field;\nhave an `index` mapping parameter value of `true`, which is the default;\nhave an `doc_values` mapping parameter value of `true`, which is the default.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            }
          },
          "required": [
            "origin",
            "pivot",
            "field"
          ]
        }
      ]
    },
    "_types.query_dsl.ExistsQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "Name of the field you wish to search.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            }
          },
          "required": [
            "field"
          ]
        }
      ]
    },
    "_types.query_dsl.FieldAndFormat": {
      "description": "A reference to a field with formatting instructions on how to return the value",
      "type": "object",
      "properties": {
        "field": {
          "description": "A wildcard pattern. The request returns values for field names matching this pattern.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "format": {
          "description": "The format in which the values are returned.",
          "type": "string"
        },
        "include_unmapped": {
          "type": "boolean"
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.query_dsl.FieldValueFactorModifier": {
      "type": "string",
      "enum": [
        "none",
        "log",
        "log1p",
        "log2p",
        "ln",
        "ln1p",
        "ln2p",
        "square",
        "sqrt",
        "reciprocal"
      ]
    },
    "_types.query_dsl.FieldValueFactorScoreFunction": {
      "type": "object",
      "properties": {
        "field": {
          "description": "Field to be extracted from the document.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "factor": {
          "description": "Optional factor to multiply the field value with.",
          "default": 1.0,
          "type": "number"
        },
        "missing": {
          "description": "Value used if the document doesn’t have that field.\nThe modifier and factor are still applied to it as though it were read from the document.",
          "type": "number"
        },
        "modifier": {
          "description": "Modifier to apply to the field value.\n\nSupported values include:\n  - `none`: Do not apply any multiplier to the field value.\n  - `log`: Take the common logarithm of the field value.\nBecause this function will return a negative value and cause an error if used on values between 0 and 1, it is recommended to use `log1p` instead.\n  - `log1p`: Add 1 to the field value and take the common logarithm.\n  - `log2p`: Add 2 to the field value and take the common logarithm.\n  - `ln`: Take the natural logarithm of the field value.\nBecause this function will return a negative value and cause an error if used on values between 0 and 1, it is recommended to use `ln1p` instead.\n  - `ln1p`: Add 1 to the field value and take the natural logarithm.\n  - `ln2p`: Add 2 to the field value and take the natural logarithm.\n  - `square`: Square the field value (multiply it by itself).\n  - `sqrt`: Take the square root of the field value.\n  - `reciprocal`: Reciprocate the field value, same as `1/x` where `x` is the field’s value.\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.FieldValueFactorModifier"
            }
          ]
        }
      },
      "required": [
        "field"
      ]
    },
    "_types.query_dsl.FunctionBoostMode": {
      "type": "string",
      "enum": [
        "multiply",
        "replace",
        "sum",
        "avg",
        "max",
        "min"
      ]
    },
    "_types.query_dsl.FunctionScoreContainer": {
      "allOf": [
        {
          "type": "object",
          "properties": {
            "filter": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "weight": {
              "type": "number"
            }
          }
        },
        {
          "type": "object",
          "properties": {
            "exp": {
              "description": "Function that scores a document with a exponential decay, depending on the distance of a numeric field value of the document from an origin.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.DecayFunction"
                }
              ]
            },
            "gauss": {
              "description": "Function that scores a document with a normal decay, depending on the distance of a numeric field value of the document from an origin.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.DecayFunction"
                }
              ]
            },
            "linear": {
              "description": "Function that scores a document with a linear decay, depending on the distance of a numeric field value of the document from an origin.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.DecayFunction"
                }
              ]
            },
            "field_value_factor": {
              "description": "Function allows you to use a field from a document to influence the score.\nIt’s similar to using the script_score function, however, it avoids the overhead of scripting.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.FieldValueFactorScoreFunction"
                }
              ]
            },
            "random_score": {
              "description": "Generates scores that are uniformly distributed from 0 up to but not including 1.\nIn case you want scores to be reproducible, it is possible to provide a `seed` and `field`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RandomScoreFunction"
                }
              ]
            },
            "script_score": {
              "description": "Enables you to wrap another query and customize the scoring of it optionally with a computation derived from other numeric field values in the doc using a script expression.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.ScriptScoreFunction"
                }
              ]
            }
          },
          "minProperties": 1,
          "maxProperties": 1
        }
      ]
    },
    "_types.query_dsl.FunctionScoreMode": {
      "type": "string",
      "enum": [
        "multiply",
        "sum",
        "avg",
        "first",
        "max",
        "min"
      ]
    },
    "_types.query_dsl.FunctionScoreQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "boost_mode": {
              "description": "Defines how he newly computed score is combined with the score of the query\n\nSupported values include:\n  - `multiply`: Query score and function score are multiplied\n  - `replace`: Only the function score is used.\nThe query score is ignored.\n  - `sum`: Query score and function score are added\n  - `avg`: Query score and function score are averaged\n  - `max`: Max of query score and function score\n  - `min`: Min of query score and function score\n\n",
              "default": "multiply",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.FunctionBoostMode"
                }
              ]
            },
            "functions": {
              "description": "One or more functions that compute a new score for each document returned by the query.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.query_dsl.FunctionScoreContainer"
              }
            },
            "max_boost": {
              "description": "Restricts the new score to not exceed the provided limit.",
              "type": "number"
            },
            "min_score": {
              "description": "Excludes documents that do not meet the provided score threshold.",
              "type": "number"
            },
            "query": {
              "description": "A query that determines the documents for which a new score is computed.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "score_mode": {
              "description": "Specifies how the computed scores are combined\n\nSupported values include:\n  - `multiply`: Scores are multiplied.\n  - `sum`: Scores are summed.\n  - `avg`: Scores are averaged.\n  - `first`: The first function that has a matching filter is applied.\n  - `max`: Maximum score is used.\n  - `min`: Minimum score is used.\n\n",
              "default": "multiply",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.FunctionScoreMode"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.query_dsl.FuzzyQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "max_expansions": {
              "description": "Maximum number of variations created.",
              "default": 50.0,
              "type": "number"
            },
            "prefix_length": {
              "description": "Number of beginning characters left unchanged when creating expansions.",
              "default": 0.0,
              "type": "number"
            },
            "rewrite": {
              "description": "Number of beginning characters left unchanged when creating expansions.",
              "default": "constant_score",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "transpositions": {
              "description": "Indicates whether edits include transpositions of two adjacent characters (for example `ab` to `ba`).",
              "default": true,
              "type": "boolean"
            },
            "fuzziness": {
              "description": "Maximum edit distance allowed for matching.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fuzziness"
                }
              ]
            },
            "value": {
              "description": "Term you wish to find in the provided field.",
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            }
          },
          "required": [
            "value"
          ]
        }
      ]
    },
    "_types.query_dsl.GeoBoundingBoxQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "deprecated": true,
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.GeoExecution"
                }
              ]
            },
            "validation_method": {
              "description": "Set to `IGNORE_MALFORMED` to accept geo points with invalid latitude or longitude.\nSet to `COERCE` to also try to infer correct latitude or longitude.\n\nSupported values include:\n  - `coerce`: Accept geo points with invalid latitude or longitude and additionally try and infer correct coordinates.\n  - `ignore_malformed`: Accept geo points with invalid latitude or longitude.\n  - `strict`\n\n",
              "default": "'strict'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.GeoValidationMethod"
                }
              ]
            },
            "ignore_unmapped": {
              "description": "Set to `true` to ignore an unmapped field and not match any documents for this query.\nSet to `false` to throw an exception if the field is not mapped.",
              "default": false,
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.query_dsl.GeoDecayFunction": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.DecayFunctionBaseGeoLocationDistance"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.GeoDistanceFeatureQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.DistanceFeatureQueryBaseGeoLocationDistance"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.GeoDistanceQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "distance": {
              "description": "The radius of the circle centred on the specified location.\nPoints which fall into this circle are considered to be matches.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Distance"
                }
              ]
            },
            "distance_type": {
              "description": "How to compute the distance.\nSet to `plane` for a faster calculation that's inaccurate on long distances and close to the poles.\n\nSupported values include:\n  - `arc`: The `arc` calculation is the most accurate.\n  - `plane`: The `plane` calculation is faster but less accurate.\n\n",
              "default": "'arc'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoDistanceType"
                }
              ]
            },
            "validation_method": {
              "description": "Set to `IGNORE_MALFORMED` to accept geo points with invalid latitude or longitude.\nSet to `COERCE` to also try to infer correct latitude or longitude.\n\nSupported values include:\n  - `coerce`: Accept geo points with invalid latitude or longitude and additionally try and infer correct coordinates.\n  - `ignore_malformed`: Accept geo points with invalid latitude or longitude.\n  - `strict`\n\n",
              "default": "'strict'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.GeoValidationMethod"
                }
              ]
            },
            "ignore_unmapped": {
              "description": "Set to `true` to ignore an unmapped field and not match any documents for this query.\nSet to `false` to throw an exception if the field is not mapped.",
              "default": false,
              "type": "boolean"
            }
          },
          "required": [
            "distance"
          ]
        }
      ]
    },
    "_types.query_dsl.GeoExecution": {
      "type": "string",
      "enum": [
        "memory",
        "indexed"
      ]
    },
    "_types.query_dsl.GeoGridQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "geotile": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoTile"
                }
              ]
            },
            "geohash": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoHash"
                }
              ]
            },
            "geohex": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.GeoHexCell"
                }
              ]
            }
          },
          "minProperties": 1,
          "maxProperties": 1
        }
      ]
    },
    "_types.query_dsl.GeoPolygonQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "validation_method": {
              "description": "\n\nSupported values include:\n  - `coerce`: Accept geo points with invalid latitude or longitude and additionally try and infer correct coordinates.\n  - `ignore_malformed`: Accept geo points with invalid latitude or longitude.\n  - `strict`\n\n",
              "default": "'strict'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.GeoValidationMethod"
                }
              ]
            },
            "ignore_unmapped": {
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.query_dsl.GeoShapeQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "ignore_unmapped": {
              "description": "Set to `true` to ignore an unmapped field and not match any documents for this query.\nSet to `false` to throw an exception if the field is not mapped.",
              "default": false,
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.query_dsl.GeoValidationMethod": {
      "type": "string",
      "enum": [
        "coerce",
        "ignore_malformed",
        "strict"
      ]
    },
    "_types.query_dsl.HasChildQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "ignore_unmapped": {
              "description": "Indicates whether to ignore an unmapped `type` and not return any documents instead of an error.",
              "default": false,
              "type": "boolean"
            },
            "inner_hits": {
              "description": "If defined, each search hit will contain inner hits.",
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.InnerHits"
                }
              ]
            },
            "max_children": {
              "description": "Maximum number of child documents that match the query allowed for a returned parent document.\nIf the parent document exceeds this limit, it is excluded from the search results.",
              "type": "number"
            },
            "min_children": {
              "description": "Minimum number of child documents that match the query required to match the query for a returned parent document.\nIf the parent document does not meet this limit, it is excluded from the search results.",
              "type": "number"
            },
            "query": {
              "description": "Query you wish to run on child documents of the `type` field.\nIf a child document matches the search, the query returns the parent document.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "score_mode": {
              "description": "Indicates how scores for matching child documents affect the root parent document’s relevance score.",
              "default": "'none'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.ChildScoreMode"
                }
              ]
            },
            "type": {
              "description": "Name of the child relationship mapped for the `join` field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RelationName"
                }
              ]
            }
          },
          "required": [
            "query",
            "type"
          ]
        }
      ]
    },
    "_types.query_dsl.HasParentQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "ignore_unmapped": {
              "description": "Indicates whether to ignore an unmapped `parent_type` and not return any documents instead of an error.\nYou can use this parameter to query multiple indices that may not contain the `parent_type`.",
              "default": false,
              "type": "boolean"
            },
            "inner_hits": {
              "description": "If defined, each search hit will contain inner hits.",
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.InnerHits"
                }
              ]
            },
            "parent_type": {
              "description": "Name of the parent relationship mapped for the `join` field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RelationName"
                }
              ]
            },
            "query": {
              "description": "Query you wish to run on parent documents of the `parent_type` field.\nIf a parent document matches the search, the query returns its child documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "score": {
              "description": "Indicates whether the relevance score of a matching parent document is aggregated into its child documents.",
              "default": false,
              "type": "boolean"
            }
          },
          "required": [
            "parent_type",
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.IdsQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "values": {
              "description": "An array of document IDs.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Ids"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.query_dsl.IntervalsAllOf": {
      "type": "object",
      "properties": {
        "intervals": {
          "description": "An array of rules to combine. All rules must produce a match in a document for the overall source to match.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
          }
        },
        "max_gaps": {
          "description": "Maximum number of positions between the matching terms.\nIntervals produced by the rules further apart than this are not considered matches.",
          "default": -1.0,
          "type": "number"
        },
        "ordered": {
          "description": "If `true`, intervals produced by the rules should appear in the order in which they are specified.",
          "default": false,
          "type": "boolean"
        },
        "filter": {
          "description": "Rule used to filter returned intervals.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsFilter"
            }
          ]
        }
      },
      "required": [
        "intervals"
      ]
    },
    "_types.query_dsl.IntervalsAnyOf": {
      "type": "object",
      "properties": {
        "intervals": {
          "description": "An array of rules to match.",
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
          }
        },
        "filter": {
          "description": "Rule used to filter returned intervals.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsFilter"
            }
          ]
        }
      },
      "required": [
        "intervals"
      ]
    },
    "_types.query_dsl.IntervalsContainer": {
      "type": "object",
      "properties": {
        "all_of": {
          "description": "Returns matches that span a combination of other rules.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsAllOf"
            }
          ]
        },
        "any_of": {
          "description": "Returns intervals produced by any of its sub-rules.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsAnyOf"
            }
          ]
        },
        "fuzzy": {
          "description": "Matches analyzed text.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsFuzzy"
            }
          ]
        },
        "match": {
          "description": "Matches analyzed text.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsMatch"
            }
          ]
        },
        "prefix": {
          "description": "Matches terms that start with a specified set of characters.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsPrefix"
            }
          ]
        },
        "range": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsRange"
            }
          ]
        },
        "regexp": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsRegexp"
            }
          ]
        },
        "wildcard": {
          "description": "Matches terms using a wildcard pattern.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsWildcard"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.query_dsl.IntervalsFilter": {
      "type": "object",
      "properties": {
        "after": {
          "description": "Query used to return intervals that follow an interval from the `filter` rule.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
            }
          ]
        },
        "before": {
          "description": "Query used to return intervals that occur before an interval from the `filter` rule.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
            }
          ]
        },
        "contained_by": {
          "description": "Query used to return intervals contained by an interval from the `filter` rule.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
            }
          ]
        },
        "containing": {
          "description": "Query used to return intervals that contain an interval from the `filter` rule.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
            }
          ]
        },
        "not_contained_by": {
          "description": "Query used to return intervals that are **not** contained by an interval from the `filter` rule.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
            }
          ]
        },
        "not_containing": {
          "description": "Query used to return intervals that do **not** contain an interval from the `filter` rule.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
            }
          ]
        },
        "not_overlapping": {
          "description": "Query used to return intervals that do **not** overlap with an interval from the `filter` rule.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
            }
          ]
        },
        "overlapping": {
          "description": "Query used to return intervals that overlap with an interval from the `filter` rule.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsContainer"
            }
          ]
        },
        "script": {
          "description": "Script used to return matching documents.\nThis script must return a boolean value: `true` or `false`.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.query_dsl.IntervalsFuzzy": {
      "type": "object",
      "properties": {
        "analyzer": {
          "description": "Analyzer used to normalize the term.",
          "type": "string"
        },
        "fuzziness": {
          "description": "Maximum edit distance allowed for matching.",
          "default": "auto",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Fuzziness"
            }
          ]
        },
        "prefix_length": {
          "description": "Number of beginning characters left unchanged when creating expansions.",
          "default": 0.0,
          "type": "number"
        },
        "term": {
          "description": "The term to match.",
          "type": "string"
        },
        "transpositions": {
          "description": "Indicates whether edits include transpositions of two adjacent characters (for example, `ab` to `ba`).",
          "default": true,
          "type": "boolean"
        },
        "use_field": {
          "description": "If specified, match intervals from this field rather than the top-level field.\nThe `term` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      },
      "required": [
        "term"
      ]
    },
    "_types.query_dsl.IntervalsMatch": {
      "type": "object",
      "properties": {
        "analyzer": {
          "description": "Analyzer used to analyze terms in the query.",
          "type": "string"
        },
        "max_gaps": {
          "description": "Maximum number of positions between the matching terms.\nTerms further apart than this are not considered matches.",
          "default": -1.0,
          "type": "number"
        },
        "ordered": {
          "description": "If `true`, matching terms must appear in their specified order.",
          "default": false,
          "type": "boolean"
        },
        "query": {
          "description": "Text you wish to find in the provided field.",
          "type": "string"
        },
        "use_field": {
          "description": "If specified, match intervals from this field rather than the top-level field.\nThe `term` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "filter": {
          "description": "An optional interval filter.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IntervalsFilter"
            }
          ]
        }
      },
      "required": [
        "query"
      ]
    },
    "_types.query_dsl.IntervalsPrefix": {
      "type": "object",
      "properties": {
        "analyzer": {
          "description": "Analyzer used to analyze the `prefix`.",
          "type": "string"
        },
        "prefix": {
          "description": "Beginning characters of terms you wish to find in the top-level field.",
          "type": "string"
        },
        "use_field": {
          "description": "If specified, match intervals from this field rather than the top-level field.\nThe `prefix` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      },
      "required": [
        "prefix"
      ]
    },
    "_types.query_dsl.IntervalsQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "all_of": {
              "description": "Returns matches that span a combination of other rules.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.IntervalsAllOf"
                }
              ]
            },
            "any_of": {
              "description": "Returns intervals produced by any of its sub-rules.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.IntervalsAnyOf"
                }
              ]
            },
            "fuzzy": {
              "description": "Matches terms that are similar to the provided term, within an edit distance defined by `fuzziness`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.IntervalsFuzzy"
                }
              ]
            },
            "match": {
              "description": "Matches analyzed text.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.IntervalsMatch"
                }
              ]
            },
            "prefix": {
              "description": "Matches terms that start with a specified set of characters.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.IntervalsPrefix"
                }
              ]
            },
            "range": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.IntervalsRange"
                }
              ]
            },
            "regexp": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.IntervalsRegexp"
                }
              ]
            },
            "wildcard": {
              "description": "Matches terms using a wildcard pattern.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.IntervalsWildcard"
                }
              ]
            }
          },
          "minProperties": 1,
          "maxProperties": 1
        }
      ]
    },
    "_types.query_dsl.IntervalsRange": {
      "type": "object",
      "properties": {
        "analyzer": {
          "description": "Analyzer used to analyze the `prefix`.",
          "type": "string"
        },
        "gte": {
          "description": "Lower term, either gte or gt must be provided.",
          "type": "string"
        },
        "gt": {
          "description": "Lower term, either gte or gt must be provided.",
          "type": "string"
        },
        "lte": {
          "description": "Upper term, either lte or lt must be provided.",
          "type": "string"
        },
        "lt": {
          "description": "Upper term, either lte or lt must be provided.",
          "type": "string"
        },
        "use_field": {
          "description": "If specified, match intervals from this field rather than the top-level field.\nThe `prefix` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      }
    },
    "_types.query_dsl.IntervalsRegexp": {
      "type": "object",
      "properties": {
        "analyzer": {
          "description": "Analyzer used to analyze the `prefix`.",
          "type": "string"
        },
        "pattern": {
          "description": "Regex pattern.",
          "type": "string"
        },
        "use_field": {
          "description": "If specified, match intervals from this field rather than the top-level field.\nThe `prefix` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      },
      "required": [
        "pattern"
      ]
    },
    "_types.query_dsl.IntervalsWildcard": {
      "type": "object",
      "properties": {
        "analyzer": {
          "description": "Analyzer used to analyze the `pattern`.\nDefaults to the top-level field's analyzer.",
          "type": "string"
        },
        "pattern": {
          "description": "Wildcard pattern used to find matching terms.",
          "type": "string"
        },
        "use_field": {
          "description": "If specified, match intervals from this field rather than the top-level field.\nThe `pattern` is normalized using the search analyzer from this field, unless `analyzer` is specified separately.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        }
      },
      "required": [
        "pattern"
      ]
    },
    "_types.query_dsl.Like": {
      "description": "Text that we want similar documents for or a lookup to a document's field for the text.",
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.LikeDocument"
        }
      ]
    },
    "_types.query_dsl.LikeDocument": {
      "type": "object",
      "properties": {
        "doc": {
          "description": "A document not present in the index.",
          "type": "object"
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/_types.Field"
          }
        },
        "_id": {
          "description": "ID of a document.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        },
        "_index": {
          "description": "Index of a document.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.IndexName"
            }
          ]
        },
        "per_field_analyzer": {
          "description": "Overrides the default analyzer.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "routing": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Routing"
            }
          ]
        },
        "version": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionNumber"
            }
          ]
        },
        "version_type": {
          "description": "\n\nSupported values include:\n  - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.\n  - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.\n  - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.\nNOTE: The `external_gte` version type is meant for special use cases and should be used with care.\nIf used incorrectly, it can result in loss of data.\n\n",
          "default": "'internal'",
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionType"
            }
          ]
        }
      }
    },
    "_types.query_dsl.MatchAllQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.MatchBoolPrefixQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "description": "Analyzer used to convert the text in the query value into tokens.",
              "type": "string"
            },
            "fuzziness": {
              "description": "Maximum edit distance allowed for matching.\nCan be applied to the term subqueries constructed for all terms but the final term.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fuzziness"
                }
              ]
            },
            "fuzzy_rewrite": {
              "description": "Method used to rewrite the query.\nCan be applied to the term subqueries constructed for all terms but the final term.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "fuzzy_transpositions": {
              "description": "If `true`, edits for fuzzy matching include transpositions of two adjacent characters (for example, `ab` to `ba`).\nCan be applied to the term subqueries constructed for all terms but the final term.",
              "default": true,
              "type": "boolean"
            },
            "max_expansions": {
              "description": "Maximum number of terms to which the query will expand.\nCan be applied to the term subqueries constructed for all terms but the final term.",
              "default": 50.0,
              "type": "number"
            },
            "minimum_should_match": {
              "description": "Minimum number of clauses that must match for a document to be returned.\nApplied to the constructed bool query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "operator": {
              "description": "Boolean logic used to interpret text in the query value.\nApplied to the constructed bool query.",
              "default": "'or'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Operator"
                }
              ]
            },
            "prefix_length": {
              "description": "Number of beginning characters left unchanged for fuzzy matching.\nCan be applied to the term subqueries constructed for all terms but the final term.",
              "default": 0.0,
              "type": "number"
            },
            "query": {
              "description": "Terms you wish to find in the provided field.\nThe last term is used in a prefix query.",
              "type": "string"
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.MatchNoneQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.MatchPhrasePrefixQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "description": "Analyzer used to convert text in the query value into tokens.",
              "type": "string"
            },
            "max_expansions": {
              "description": "Maximum number of terms to which the last provided term of the query value will expand.",
              "default": 50.0,
              "type": "number"
            },
            "query": {
              "description": "Text you wish to find in the provided field.",
              "type": "string"
            },
            "slop": {
              "description": "Maximum number of positions allowed between matching tokens.",
              "default": 0.0,
              "type": "number"
            },
            "zero_terms_query": {
              "description": "Indicates whether no documents are returned if the analyzer removes all tokens, such as when using a `stop` filter.\n\nSupported values include:\n  - `all`: Returns all documents, similar to a `match_all` query.\n  - `none`: No documents are returned if the `analyzer` removes all tokens.\n\n",
              "default": "none",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.ZeroTermsQuery"
                }
              ]
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.MatchPhraseQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "description": "Analyzer used to convert the text in the query value into tokens.",
              "type": "string"
            },
            "query": {
              "description": "Query terms that are analyzed and turned into a phrase query.",
              "type": "string"
            },
            "slop": {
              "description": "Maximum number of positions allowed between matching tokens.",
              "default": 0.0,
              "type": "number"
            },
            "zero_terms_query": {
              "description": "Indicates whether no documents are returned if the `analyzer` removes all tokens, such as when using a `stop` filter.\n\nSupported values include:\n  - `all`: Returns all documents, similar to a `match_all` query.\n  - `none`: No documents are returned if the `analyzer` removes all tokens.\n\n",
              "default": "'none'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.ZeroTermsQuery"
                }
              ]
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.MatchQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "description": "Analyzer used to convert the text in the query value into tokens.",
              "type": "string"
            },
            "auto_generate_synonyms_phrase_query": {
              "description": "If `true`, match phrase queries are automatically created for multi-term synonyms.",
              "default": true,
              "type": "boolean"
            },
            "cutoff_frequency": {
              "deprecated": true,
              "type": "number"
            },
            "fuzziness": {
              "description": "Maximum edit distance allowed for matching.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fuzziness"
                }
              ]
            },
            "fuzzy_rewrite": {
              "description": "Method used to rewrite the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "fuzzy_transpositions": {
              "description": "If `true`, edits for fuzzy matching include transpositions of two adjacent characters (for example, `ab` to `ba`).",
              "default": true,
              "type": "boolean"
            },
            "lenient": {
              "description": "If `true`, format-based errors, such as providing a text query value for a numeric field, are ignored.",
              "default": false,
              "type": "boolean"
            },
            "max_expansions": {
              "description": "Maximum number of terms to which the query will expand.",
              "default": 50.0,
              "type": "number"
            },
            "minimum_should_match": {
              "description": "Minimum number of clauses that must match for a document to be returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "operator": {
              "description": "Boolean logic used to interpret text in the query value.",
              "default": "'or'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Operator"
                }
              ]
            },
            "prefix_length": {
              "description": "Number of beginning characters left unchanged for fuzzy matching.",
              "default": 0.0,
              "type": "number"
            },
            "query": {
              "description": "Text, number, boolean value or date you wish to find in the provided field.",
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "zero_terms_query": {
              "description": "Indicates whether no documents are returned if the `analyzer` removes all tokens, such as when using a `stop` filter.\n\nSupported values include:\n  - `all`: Returns all documents, similar to a `match_all` query.\n  - `none`: No documents are returned if the `analyzer` removes all tokens.\n\n",
              "default": "'none'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.ZeroTermsQuery"
                }
              ]
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.MoreLikeThisQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "description": "The analyzer that is used to analyze the free form text.\nDefaults to the analyzer associated with the first field in fields.",
              "type": "string"
            },
            "boost_terms": {
              "description": "Each term in the formed query could be further boosted by their tf-idf score.\nThis sets the boost factor to use when using this feature.\nDefaults to deactivated (0).",
              "default": 0.0,
              "type": "number"
            },
            "fail_on_unsupported_field": {
              "description": "Controls whether the query should fail (throw an exception) if any of the specified fields are not of the supported types (`text` or `keyword`).",
              "default": true,
              "type": "boolean"
            },
            "fields": {
              "description": "A list of fields to fetch and analyze the text from.\nDefaults to the `index.query.default_field` index setting, which has a default value of `*`.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.Field"
              }
            },
            "include": {
              "description": "Specifies whether the input documents should also be included in the search results returned.",
              "default": false,
              "type": "boolean"
            },
            "like": {
              "description": "Specifies free form text and/or a single or multiple documents for which you want to find similar documents.",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Like"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.query_dsl.Like"
                  }
                }
              ]
            },
            "max_doc_freq": {
              "description": "The maximum document frequency above which the terms are ignored from the input document.",
              "type": "number"
            },
            "max_query_terms": {
              "description": "The maximum number of query terms that can be selected.",
              "default": 25.0,
              "type": "number"
            },
            "max_word_length": {
              "description": "The maximum word length above which the terms are ignored.\nDefaults to unbounded (`0`).",
              "default": 0.0,
              "type": "number"
            },
            "min_doc_freq": {
              "description": "The minimum document frequency below which the terms are ignored from the input document.",
              "default": 5.0,
              "type": "number"
            },
            "minimum_should_match": {
              "description": "After the disjunctive query has been formed, this parameter controls the number of terms that must match.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "min_term_freq": {
              "description": "The minimum term frequency below which the terms are ignored from the input document.",
              "default": 2.0,
              "type": "number"
            },
            "min_word_length": {
              "description": "The minimum word length below which the terms are ignored.",
              "default": 0.0,
              "type": "number"
            },
            "routing": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Routing"
                }
              ]
            },
            "stop_words": {
              "description": "An array of stop words.\nAny word in this set is ignored.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.analysis.StopWords"
                }
              ]
            },
            "unlike": {
              "description": "Used in combination with `like` to exclude documents that match a set of terms.",
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Like"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.query_dsl.Like"
                  }
                }
              ]
            },
            "version": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.VersionNumber"
                }
              ]
            },
            "version_type": {
              "description": "\n\nSupported values include:\n  - `internal`: Use internal versioning that starts at 1 and increments with each update or delete.\n  - `external`: Only index the document if the specified version is strictly higher than the version of the stored document or if there is no existing document.\n  - `external_gte`: Only index the document if the specified version is equal or higher than the version of the stored document or if there is no existing document.\nNOTE: The `external_gte` version type is meant for special use cases and should be used with care.\nIf used incorrectly, it can result in loss of data.\n\n",
              "default": "'internal'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.VersionType"
                }
              ]
            }
          },
          "required": [
            "like"
          ]
        }
      ]
    },
    "_types.query_dsl.MultiMatchQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "description": "Analyzer used to convert the text in the query value into tokens.",
              "type": "string"
            },
            "auto_generate_synonyms_phrase_query": {
              "description": "If `true`, match phrase queries are automatically created for multi-term synonyms.",
              "default": true,
              "type": "boolean"
            },
            "cutoff_frequency": {
              "deprecated": true,
              "type": "number"
            },
            "fields": {
              "description": "The fields to be queried.\nDefaults to the `index.query.default_field` index settings, which in turn defaults to `*`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fields"
                }
              ]
            },
            "fuzziness": {
              "description": "Maximum edit distance allowed for matching.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fuzziness"
                }
              ]
            },
            "fuzzy_rewrite": {
              "description": "Method used to rewrite the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "fuzzy_transpositions": {
              "description": "If `true`, edits for fuzzy matching include transpositions of two adjacent characters (for example, `ab` to `ba`).\nCan be applied to the term subqueries constructed for all terms but the final term.",
              "default": true,
              "type": "boolean"
            },
            "lenient": {
              "description": "If `true`, format-based errors, such as providing a text query value for a numeric field, are ignored.",
              "default": false,
              "type": "boolean"
            },
            "max_expansions": {
              "description": "Maximum number of terms to which the query will expand.",
              "default": 50.0,
              "type": "number"
            },
            "minimum_should_match": {
              "description": "Minimum number of clauses that must match for a document to be returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "operator": {
              "description": "Boolean logic used to interpret text in the query value.",
              "default": "'or'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Operator"
                }
              ]
            },
            "prefix_length": {
              "description": "Number of beginning characters left unchanged for fuzzy matching.",
              "default": 0.0,
              "type": "number"
            },
            "query": {
              "description": "Text, number, boolean value or date you wish to find in the provided field.",
              "type": "string"
            },
            "slop": {
              "description": "Maximum number of positions allowed between matching tokens.",
              "default": 0.0,
              "type": "number"
            },
            "tie_breaker": {
              "description": "Determines how scores for each per-term blended query and scores across groups are combined.",
              "default": 0.0,
              "type": "number"
            },
            "type": {
              "description": "How `the` multi_match query is executed internally.\n\nSupported values include:\n  - `best_fields`: Finds documents that match any field, but uses the `_score` from the best field.\n  - `most_fields`: Finds documents that match any field and combines the `_score` from each field.\n  - `cross_fields`: Treats fields with the same analyzer as though they were one big field.\nLooks for each word in any field.\n  - `phrase`: Runs a `match_phrase` query on each field and uses the `_score` from the best field.\n  - `phrase_prefix`: Runs a `match_phrase_prefix` query on each field and uses the `_score` from the best field.\n  - `bool_prefix`: Creates a `match_bool_prefix` query on each field and combines the `_score` from each field.\n\n",
              "default": "'best_fields'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.TextQueryType"
                }
              ]
            },
            "zero_terms_query": {
              "description": "Indicates whether no documents are returned if the `analyzer` removes all tokens, such as when using a `stop` filter.\n\nSupported values include:\n  - `all`: Returns all documents, similar to a `match_all` query.\n  - `none`: No documents are returned if the `analyzer` removes all tokens.\n\n",
              "default": "'none'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.ZeroTermsQuery"
                }
              ]
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.MultiValueMode": {
      "type": "string",
      "enum": [
        "min",
        "max",
        "avg",
        "sum"
      ]
    },
    "_types.query_dsl.NestedQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "ignore_unmapped": {
              "description": "Indicates whether to ignore an unmapped path and not return any documents instead of an error.",
              "default": false,
              "type": "boolean"
            },
            "inner_hits": {
              "description": "If defined, each search hit will contain inner hits.",
              "allOf": [
                {
                  "$ref": "#/$defs/_global.search._types.InnerHits"
                }
              ]
            },
            "path": {
              "description": "Path to the nested object you wish to search.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "query": {
              "description": "Query you wish to run on nested objects in the path.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "score_mode": {
              "description": "How scores for matching child objects affect the root parent document’s relevance score.",
              "default": "'avg'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.ChildScoreMode"
                }
              ]
            }
          },
          "required": [
            "path",
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.NumberRangeQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.RangeQueryBasedouble"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.NumericDecayFunction": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.DecayFunctionBasedoubledouble"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.Operator": {
      "type": "string",
      "enum": [
        "and",
        "AND",
        "or",
        "OR"
      ]
    },
    "_types.query_dsl.ParentIdQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "description": "ID of the parent document.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Id"
                }
              ]
            },
            "ignore_unmapped": {
              "description": "Indicates whether to ignore an unmapped `type` and not return any documents instead of an error.",
              "default": false,
              "type": "boolean"
            },
            "type": {
              "description": "Name of the child relationship mapped for the `join` field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.RelationName"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.query_dsl.PercolateQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "document": {
              "description": "The source of the document being percolated.",
              "type": "object"
            },
            "documents": {
              "description": "An array of sources of the documents being percolated.",
              "type": "array",
              "items": {
                "type": "object"
              }
            },
            "field": {
              "description": "Field that holds the indexed queries. The field must use the `percolator` mapping type.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "id": {
              "description": "The ID of a stored document to percolate.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Id"
                }
              ]
            },
            "index": {
              "description": "The index of a stored document to percolate.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.IndexName"
                }
              ]
            },
            "name": {
              "description": "The suffix used for the `_percolator_document_slot` field when multiple `percolate` queries are specified.",
              "type": "string"
            },
            "preference": {
              "description": "Preference used to fetch document to percolate.",
              "type": "string"
            },
            "routing": {
              "description": "Routing used to fetch document to percolate.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Routing"
                }
              ]
            },
            "version": {
              "description": "The expected version of a stored document to percolate.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.VersionNumber"
                }
              ]
            }
          },
          "required": [
            "field"
          ]
        }
      ]
    },
    "_types.query_dsl.PinnedDoc": {
      "type": "object",
      "properties": {
        "_id": {
          "description": "The unique document ID.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        },
        "_index": {
          "description": "The index that contains the document.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.IndexName"
            }
          ]
        }
      },
      "required": [
        "_id"
      ]
    },
    "_types.query_dsl.PinnedQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "allOf": [
            {
              "type": "object",
              "properties": {
                "organic": {
                  "description": "Any choice of query used to rank documents which will be ranked below the \"pinned\" documents.",
                  "allOf": [
                    {
                      "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                    }
                  ]
                }
              },
              "required": [
                "organic"
              ]
            },
            {
              "type": "object",
              "properties": {
                "ids": {
                  "description": "Document IDs listed in the order they are to appear in results.\nRequired if `docs` is not specified.",
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.Id"
                  }
                },
                "docs": {
                  "description": "Documents listed in the order they are to appear in results.\nRequired if `ids` is not specified.",
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.query_dsl.PinnedDoc"
                  }
                }
              },
              "minProperties": 1,
              "maxProperties": 1
            }
          ]
        }
      ]
    },
    "_types.query_dsl.PrefixQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "rewrite": {
              "description": "Method used to rewrite the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "value": {
              "description": "Beginning characters of terms you wish to find in the provided field.",
              "type": "string"
            },
            "case_insensitive": {
              "description": "Allows ASCII case insensitive matching of the value with the indexed field values when set to `true`.\nDefault is `false` which means the case sensitivity of matching depends on the underlying field’s mapping.",
              "default": false,
              "x-state": "Generally available; Added in 7.10.0",
              "type": "boolean"
            }
          },
          "required": [
            "value"
          ]
        }
      ]
    },
    "_types.query_dsl.QueryBase": {
      "type": "object",
      "properties": {
        "boost": {
          "description": "Floating point number used to decrease or increase the relevance scores of the query.\nBoost values are relative to the default value of 1.0.\nA boost value between 0 and 1.0 decreases the relevance score.\nA value greater than 1.0 increases the relevance score.",
          "default": 1.0,
          "type": "number"
        },
        "_name": {
          "type": "string"
        }
      }
    },
    "_types.query_dsl.QueryContainer": {
      "description": "An Elasticsearch Query DSL (Domain Specific Language) object that defines a query.",
      "type": "object",
      "properties": {
        "bool": {
          "description": "matches documents matching boolean combinations of other queries.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.BoolQuery"
            }
          ]
        },
        "boosting": {
          "description": "Returns documents matching a `positive` query while reducing the relevance score of documents that also match a `negative` query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.BoostingQuery"
            }
          ]
        },
        "common": {
          "deprecated": true,
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.CommonTermsQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "combined_fields": {
          "description": "The `combined_fields` query supports searching multiple text fields as if their contents had been indexed into one combined field.",
          "x-state": "Generally available; Added in 7.13.0",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.CombinedFieldsQuery"
            }
          ]
        },
        "constant_score": {
          "description": "Wraps a filter query and returns every matching document with a relevance score equal to the `boost` parameter value.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.ConstantScoreQuery"
            }
          ]
        },
        "dis_max": {
          "description": "Returns documents matching one or more wrapped queries, called query clauses or clauses.\nIf a returned document matches multiple query clauses, the `dis_max` query assigns the document the highest relevance score from any matching clause, plus a tie breaking increment for any additional matching subqueries.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.DisMaxQuery"
            }
          ]
        },
        "distance_feature": {
          "description": "Boosts the relevance score of documents closer to a provided origin date or point.\nFor example, you can use this query to give more weight to documents closer to a certain date or location.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.DistanceFeatureQuery"
            }
          ]
        },
        "exists": {
          "description": "Returns documents that contain an indexed value for a field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.ExistsQuery"
            }
          ]
        },
        "function_score": {
          "description": "The `function_score` enables you to modify the score of documents that are retrieved by a query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.FunctionScoreQuery"
            }
          ]
        },
        "fuzzy": {
          "description": "Returns documents that contain terms similar to the search term, as measured by a Levenshtein edit distance.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.FuzzyQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "geo_bounding_box": {
          "description": "Matches geo_point and geo_shape values that intersect a bounding box.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.GeoBoundingBoxQuery"
            }
          ]
        },
        "geo_distance": {
          "description": "Matches `geo_point` and `geo_shape` values within a given distance of a geopoint.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.GeoDistanceQuery"
            }
          ]
        },
        "geo_grid": {
          "description": "Matches `geo_point` and `geo_shape` values that intersect a grid cell from a GeoGrid aggregation.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.GeoGridQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "geo_polygon": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.GeoPolygonQuery"
            }
          ]
        },
        "geo_shape": {
          "description": "Filter documents indexed using either the `geo_shape` or the `geo_point` type.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.GeoShapeQuery"
            }
          ]
        },
        "has_child": {
          "description": "Returns parent documents whose joined child documents match a provided query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.HasChildQuery"
            }
          ]
        },
        "has_parent": {
          "description": "Returns child documents whose joined parent document matches a provided query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.HasParentQuery"
            }
          ]
        },
        "ids": {
          "description": "Returns documents based on their IDs.\nThis query uses document IDs stored in the `_id` field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.IdsQuery"
            }
          ]
        },
        "intervals": {
          "description": "Returns documents based on the order and proximity of matching terms.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.IntervalsQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "knn": {
          "description": "Finds the k nearest vectors to a query vector, as measured by a similarity\nmetric. knn query finds nearest vectors through approximate search on indexed\ndense_vectors.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.KnnQuery"
            }
          ]
        },
        "match": {
          "description": "Returns documents that match a provided text, number, date or boolean value.\nThe provided text is analyzed before matching.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.MatchQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "match_all": {
          "description": "Matches all documents, giving them all a `_score` of 1.0.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.MatchAllQuery"
            }
          ]
        },
        "match_bool_prefix": {
          "description": "Analyzes its input and constructs a `bool` query from the terms.\nEach term except the last is used in a `term` query.\nThe last term is used in a prefix query.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.MatchBoolPrefixQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "match_none": {
          "description": "Matches no documents.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.MatchNoneQuery"
            }
          ]
        },
        "match_phrase": {
          "description": "Analyzes the text and creates a phrase query out of the analyzed text.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.MatchPhraseQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "match_phrase_prefix": {
          "description": "Returns documents that contain the words of a provided text, in the same order as provided.\nThe last term of the provided text is treated as a prefix, matching any words that begin with that term.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.MatchPhrasePrefixQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "more_like_this": {
          "description": "Returns documents that are \"like\" a given set of documents.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.MoreLikeThisQuery"
            }
          ]
        },
        "multi_match": {
          "description": "Enables you to search for a provided text, number, date or boolean value across multiple fields.\nThe provided text is analyzed before matching.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.MultiMatchQuery"
            }
          ]
        },
        "nested": {
          "description": "Wraps another query to search nested fields.\nIf an object matches the search, the nested query returns the root parent document.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.NestedQuery"
            }
          ]
        },
        "parent_id": {
          "description": "Returns child documents joined to a specific parent document.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.ParentIdQuery"
            }
          ]
        },
        "percolate": {
          "description": "Matches queries stored in an index.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.PercolateQuery"
            }
          ]
        },
        "pinned": {
          "description": "Promotes selected documents to rank higher than those matching a given query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.PinnedQuery"
            }
          ]
        },
        "prefix": {
          "description": "Returns documents that contain a specific prefix in a provided field.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.PrefixQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "query_string": {
          "description": "Returns documents based on a provided query string, using a parser with a strict syntax.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryStringQuery"
            }
          ]
        },
        "range": {
          "description": "Returns documents that contain terms within a provided range.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.RangeQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "rank_feature": {
          "description": "Boosts the relevance score of documents based on the numeric value of a `rank_feature` or `rank_features` field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.RankFeatureQuery"
            }
          ]
        },
        "regexp": {
          "description": "Returns documents that contain terms matching a regular expression.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.RegexpQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "rule": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.RuleQuery"
            }
          ]
        },
        "script": {
          "description": "Filters documents based on a provided script.\nThe script query is typically used in a filter context.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.ScriptQuery"
            }
          ]
        },
        "script_score": {
          "description": "Uses a script to provide a custom score for returned documents.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.ScriptScoreQuery"
            }
          ]
        },
        "semantic": {
          "description": "A semantic query to semantic_text field types",
          "x-state": "Generally available; Added in 8.15.0",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SemanticQuery"
            }
          ]
        },
        "shape": {
          "description": "Queries documents that contain fields indexed using the `shape` type.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.ShapeQuery"
            }
          ]
        },
        "simple_query_string": {
          "description": "Returns documents based on a provided query string, using a parser with a limited but fault-tolerant syntax.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SimpleQueryStringQuery"
            }
          ]
        },
        "span_containing": {
          "description": "Returns matches which enclose another span query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanContainingQuery"
            }
          ]
        },
        "span_field_masking": {
          "description": "Wrapper to allow span queries to participate in composite single-field span queries by _lying_ about their search field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanFieldMaskingQuery"
            }
          ]
        },
        "span_first": {
          "description": "Matches spans near the beginning of a field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanFirstQuery"
            }
          ]
        },
        "span_multi": {
          "description": "Allows you to wrap a multi term query (one of `wildcard`, `fuzzy`, `prefix`, `range`, or `regexp` query) as a `span` query, so it can be nested.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanMultiTermQuery"
            }
          ]
        },
        "span_near": {
          "description": "Matches spans which are near one another.\nYou can specify `slop`, the maximum number of intervening unmatched positions, as well as whether matches are required to be in-order.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanNearQuery"
            }
          ]
        },
        "span_not": {
          "description": "Removes matches which overlap with another span query or which are within x tokens before (controlled by the parameter `pre`) or y tokens after (controlled by the parameter `post`) another span query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanNotQuery"
            }
          ]
        },
        "span_or": {
          "description": "Matches the union of its span clauses.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanOrQuery"
            }
          ]
        },
        "span_term": {
          "description": "Matches spans containing a term.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.SpanTermQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "span_within": {
          "description": "Returns matches which are enclosed inside another span query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanWithinQuery"
            }
          ]
        },
        "sparse_vector": {
          "description": "Using input query vectors or a natural language processing model to convert a query into a list of token-weight pairs, queries against a sparse vector field.",
          "x-state": "Generally available; Added in 8.15.0",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SparseVectorQuery"
            }
          ]
        },
        "term": {
          "description": "Returns documents that contain an exact term in a provided field.\nTo return a document, the query term must exactly match the queried field's value, including whitespace and capitalization.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.TermQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "terms": {
          "description": "Returns documents that contain one or more exact terms in a provided field.\nTo return a document, one or more terms must exactly match a field value, including whitespace and capitalization.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.TermsQuery"
            }
          ]
        },
        "terms_set": {
          "description": "Returns documents that contain a minimum number of exact terms in a provided field.\nTo return a document, a required number of terms must exactly match the field values, including whitespace and capitalization.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.TermsSetQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "text_expansion": {
          "deprecated": true,
          "description": "Uses a natural language processing model to convert the query text into a list of token-weight pairs which are then used in a query against a sparse vector or rank features field.",
          "x-state": "Generally available; Added in 8.8.0",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.TextExpansionQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "weighted_tokens": {
          "deprecated": true,
          "description": "Supports returning text_expansion query results by sending in precomputed tokens with the query.",
          "x-state": "Generally available; Added in 8.13.0",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.WeightedTokensQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "wildcard": {
          "description": "Returns documents that contain terms matching a wildcard pattern.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.WildcardQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "wrapper": {
          "description": "A query that accepts any other query as base64 encoded string.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.WrapperQuery"
            }
          ]
        },
        "type": {
          "deprecated": true,
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.TypeQuery"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.query_dsl.QueryStringQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "allow_leading_wildcard": {
              "description": "If `true`, the wildcard characters `*` and `?` are allowed as the first character of the query string.",
              "default": true,
              "type": "boolean"
            },
            "analyzer": {
              "description": "Analyzer used to convert text in the query string into tokens.",
              "type": "string"
            },
            "analyze_wildcard": {
              "description": "If `true`, the query attempts to analyze wildcard terms in the query string.",
              "default": false,
              "type": "boolean"
            },
            "auto_generate_synonyms_phrase_query": {
              "description": "If `true`, match phrase queries are automatically created for multi-term synonyms.",
              "default": true,
              "type": "boolean"
            },
            "default_field": {
              "description": "Default field to search if no field is provided in the query string.\nSupports wildcards (`*`).\nDefaults to the `index.query.default_field` index setting, which has a default value of `*`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "default_operator": {
              "description": "Default boolean logic used to interpret text in the query string if no operators are specified.",
              "default": "'or'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Operator"
                }
              ]
            },
            "enable_position_increments": {
              "description": "If `true`, enable position increments in queries constructed from a `query_string` search.",
              "default": true,
              "type": "boolean"
            },
            "escape": {
              "default": false,
              "type": "boolean"
            },
            "fields": {
              "description": "Array of fields to search. Supports wildcards (`*`).",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.Field"
              }
            },
            "fuzziness": {
              "description": "Maximum edit distance allowed for fuzzy matching.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Fuzziness"
                }
              ]
            },
            "fuzzy_max_expansions": {
              "description": "Maximum number of terms to which the query expands for fuzzy matching.",
              "default": 50.0,
              "type": "number"
            },
            "fuzzy_prefix_length": {
              "description": "Number of beginning characters left unchanged for fuzzy matching.",
              "default": 0.0,
              "type": "number"
            },
            "fuzzy_rewrite": {
              "description": "Method used to rewrite the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "fuzzy_transpositions": {
              "description": "If `true`, edits for fuzzy matching include transpositions of two adjacent characters (for example, `ab` to `ba`).",
              "default": true,
              "type": "boolean"
            },
            "lenient": {
              "description": "If `true`, format-based errors, such as providing a text value for a numeric field, are ignored.",
              "default": false,
              "type": "boolean"
            },
            "max_determinized_states": {
              "description": "Maximum number of automaton states required for the query.",
              "default": 10000.0,
              "type": "number"
            },
            "minimum_should_match": {
              "description": "Minimum number of clauses that must match for a document to be returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "phrase_slop": {
              "description": "Maximum number of positions allowed between matching tokens for phrases.",
              "default": 0.0,
              "type": "number"
            },
            "query": {
              "description": "Query string you wish to parse and use for search.",
              "type": "string"
            },
            "quote_analyzer": {
              "description": "Analyzer used to convert quoted text in the query string into tokens.\nFor quoted text, this parameter overrides the analyzer specified in the `analyzer` parameter.",
              "type": "string"
            },
            "quote_field_suffix": {
              "description": "Suffix appended to quoted text in the query string.\nYou can use this suffix to use a different analysis method for exact matches.",
              "type": "string"
            },
            "rewrite": {
              "description": "Method used to rewrite the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "tie_breaker": {
              "description": "How to combine the queries generated from the individual search terms in the resulting `dis_max` query.",
              "type": "number"
            },
            "time_zone": {
              "description": "Coordinated Universal Time (UTC) offset or IANA time zone used to convert date values in the query string to UTC.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TimeZone"
                }
              ]
            },
            "type": {
              "description": "Determines how the query matches and scores documents.\n\nSupported values include:\n  - `best_fields`: Finds documents that match any field, but uses the `_score` from the best field.\n  - `most_fields`: Finds documents that match any field and combines the `_score` from each field.\n  - `cross_fields`: Treats fields with the same analyzer as though they were one big field.\nLooks for each word in any field.\n  - `phrase`: Runs a `match_phrase` query on each field and uses the `_score` from the best field.\n  - `phrase_prefix`: Runs a `match_phrase_prefix` query on each field and uses the `_score` from the best field.\n  - `bool_prefix`: Creates a `match_bool_prefix` query on each field and combines the `_score` from each field.\n\n",
              "default": "'best_fields'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.TextQueryType"
                }
              ]
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.RandomScoreFunction": {
      "type": "object",
      "properties": {
        "field": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "seed": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ]
        }
      }
    },
    "_types.query_dsl.RangeQuery": {
      "oneOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.UntypedRangeQuery"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.DateRangeQuery"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.NumberRangeQuery"
        },
        {
          "$ref": "#/$defs/_types.query_dsl.TermRangeQuery"
        }
      ]
    },
    "_types.query_dsl.RangeQueryBase": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "relation": {
              "description": "Indicates how the range query matches values for `range` fields.\n\nSupported values include:\n  - `within`: Matches documents with a range field value entirely within the query’s range.\n  - `contains`: Matches documents with a range field value that entirely contains the query’s range.\n  - `intersects`: Matches documents with a range field value that intersects the query’s range.\n\n",
              "default": "intersects",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RangeRelation"
                }
              ]
            },
            "gt": {
              "description": "Greater than.",
              "type": "object"
            },
            "gte": {
              "description": "Greater than or equal to.",
              "type": "object"
            },
            "lt": {
              "description": "Less than.",
              "type": "object"
            },
            "lte": {
              "description": "Less than or equal to.",
              "type": "object"
            }
          }
        }
      ]
    },
    "_types.query_dsl.RangeQueryBaseDateMath": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "relation": {
              "description": "Indicates how the range query matches values for `range` fields.\n\nSupported values include:\n  - `within`: Matches documents with a range field value entirely within the query’s range.\n  - `contains`: Matches documents with a range field value that entirely contains the query’s range.\n  - `intersects`: Matches documents with a range field value that intersects the query’s range.\n\n",
              "default": "intersects",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RangeRelation"
                }
              ]
            },
            "gt": {
              "description": "Greater than.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateMath"
                }
              ]
            },
            "gte": {
              "description": "Greater than or equal to.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateMath"
                }
              ]
            },
            "lt": {
              "description": "Less than.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateMath"
                }
              ]
            },
            "lte": {
              "description": "Less than or equal to.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateMath"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.query_dsl.RangeQueryBasedouble": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "relation": {
              "description": "Indicates how the range query matches values for `range` fields.\n\nSupported values include:\n  - `within`: Matches documents with a range field value entirely within the query’s range.\n  - `contains`: Matches documents with a range field value that entirely contains the query’s range.\n  - `intersects`: Matches documents with a range field value that intersects the query’s range.\n\n",
              "default": "intersects",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RangeRelation"
                }
              ]
            },
            "gt": {
              "description": "Greater than.",
              "type": "number"
            },
            "gte": {
              "description": "Greater than or equal to.",
              "type": "number"
            },
            "lt": {
              "description": "Less than.",
              "type": "number"
            },
            "lte": {
              "description": "Less than or equal to.",
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.query_dsl.RangeQueryBasestring": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "relation": {
              "description": "Indicates how the range query matches values for `range` fields.\n\nSupported values include:\n  - `within`: Matches documents with a range field value entirely within the query’s range.\n  - `contains`: Matches documents with a range field value that entirely contains the query’s range.\n  - `intersects`: Matches documents with a range field value that intersects the query’s range.\n\n",
              "default": "intersects",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RangeRelation"
                }
              ]
            },
            "gt": {
              "description": "Greater than.",
              "type": "string"
            },
            "gte": {
              "description": "Greater than or equal to.",
              "type": "string"
            },
            "lt": {
              "description": "Less than.",
              "type": "string"
            },
            "lte": {
              "description": "Less than or equal to.",
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.query_dsl.RangeRelation": {
      "type": "string",
      "enum": [
        "within",
        "contains",
        "intersects"
      ]
    },
    "_types.query_dsl.RankFeatureFunction": {
      "type": "object"
    },
    "_types.query_dsl.RankFeatureFunctionLinear": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.RankFeatureFunction"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.RankFeatureFunctionLogarithm": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.RankFeatureFunction"
        },
        {
          "type": "object",
          "properties": {
            "scaling_factor": {
              "description": "Configurable scaling factor.",
              "type": "number"
            }
          },
          "required": [
            "scaling_factor"
          ]
        }
      ]
    },
    "_types.query_dsl.RankFeatureFunctionSaturation": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.RankFeatureFunction"
        },
        {
          "type": "object",
          "properties": {
            "pivot": {
              "description": "Configurable pivot value so that the result will be less than 0.5.",
              "type": "number"
            }
          }
        }
      ]
    },
    "_types.query_dsl.RankFeatureFunctionSigmoid": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.RankFeatureFunction"
        },
        {
          "type": "object",
          "properties": {
            "pivot": {
              "description": "Configurable pivot value so that the result will be less than 0.5.",
              "type": "number"
            },
            "exponent": {
              "description": "Configurable Exponent.",
              "type": "number"
            }
          },
          "required": [
            "pivot",
            "exponent"
          ]
        }
      ]
    },
    "_types.query_dsl.RankFeatureQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "`rank_feature` or `rank_features` field used to boost relevance scores.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "saturation": {
              "description": "Saturation function used to boost relevance scores based on the value of the rank feature `field`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RankFeatureFunctionSaturation"
                }
              ]
            },
            "log": {
              "description": "Logarithmic function used to boost relevance scores based on the value of the rank feature `field`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RankFeatureFunctionLogarithm"
                }
              ]
            },
            "linear": {
              "description": "Linear function used to boost relevance scores based on the value of the rank feature `field`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RankFeatureFunctionLinear"
                }
              ]
            },
            "sigmoid": {
              "description": "Sigmoid function used to boost relevance scores based on the value of the rank feature `field`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.RankFeatureFunctionSigmoid"
                }
              ]
            }
          },
          "required": [
            "field"
          ]
        }
      ]
    },
    "_types.query_dsl.RegexpQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "case_insensitive": {
              "description": "Allows case insensitive matching of the regular expression value with the indexed field values when set to `true`.\nWhen `false`, case sensitivity of matching depends on the underlying field’s mapping.",
              "default": false,
              "x-state": "Generally available; Added in 7.10.0",
              "type": "boolean"
            },
            "flags": {
              "description": "Enables optional operators for the regular expression.",
              "type": "string"
            },
            "max_determinized_states": {
              "description": "Maximum number of automaton states required for the query.",
              "default": 10000.0,
              "type": "number"
            },
            "rewrite": {
              "description": "Method used to rewrite the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "value": {
              "description": "Regular expression for terms you wish to find in the provided field.",
              "type": "string"
            }
          },
          "required": [
            "value"
          ]
        }
      ]
    },
    "_types.query_dsl.RuleQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "organic": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "ruleset_ids": {
              "oneOf": [
                {
                  "$ref": "#/$defs/_types.Id"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "#/$defs/_types.Id"
                  }
                }
              ]
            },
            "ruleset_id": {
              "type": "string"
            },
            "match_criteria": {
              "type": "object"
            }
          },
          "required": [
            "organic",
            "match_criteria"
          ]
        }
      ]
    },
    "_types.query_dsl.ScriptQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "script": {
              "description": "Contains a script to run as a query.\nThis script must return a boolean value, `true` or `false`.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            }
          },
          "required": [
            "script"
          ]
        }
      ]
    },
    "_types.query_dsl.ScriptScoreFunction": {
      "type": "object",
      "properties": {
        "script": {
          "description": "A script that computes a score.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        }
      },
      "required": [
        "script"
      ]
    },
    "_types.query_dsl.ScriptScoreQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "min_score": {
              "description": "Documents with a score lower than this floating point number are excluded from the search results.",
              "type": "number"
            },
            "query": {
              "description": "Query used to return documents.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            },
            "script": {
              "description": "Script used to compute the score of documents returned by the query.\nImportant: final relevance scores from the `script_score` query cannot be negative.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            }
          },
          "required": [
            "query",
            "script"
          ]
        }
      ]
    },
    "_types.query_dsl.SemanticQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "description": "The field to query, which must be a semantic_text field type",
              "type": "string"
            },
            "query": {
              "description": "The query text",
              "type": "string"
            }
          },
          "required": [
            "field",
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.ShapeQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "ignore_unmapped": {
              "description": "When set to `true` the query ignores an unmapped field and will not match any documents.",
              "type": "boolean"
            }
          }
        }
      ]
    },
    "_types.query_dsl.SimpleQueryStringFlag": {
      "type": "string",
      "enum": [
        "NONE",
        "AND",
        "NOT",
        "OR",
        "PREFIX",
        "PHRASE",
        "PRECEDENCE",
        "ESCAPE",
        "WHITESPACE",
        "FUZZY",
        "NEAR",
        "SLOP",
        "ALL"
      ]
    },
    "_types.query_dsl.SimpleQueryStringFlags": {
      "description": "Query flags can be either a single flag or a combination of flags, e.g. `OR|AND|PREFIX`",
      "allOf": [
        {
          "$ref": "#/$defs/_spec_utils.PipeSeparatedFlagsSimpleQueryStringFlag"
        }
      ]
    },
    "_types.query_dsl.SimpleQueryStringQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "analyzer": {
              "description": "Analyzer used to convert text in the query string into tokens.",
              "type": "string"
            },
            "analyze_wildcard": {
              "description": "If `true`, the query attempts to analyze wildcard terms in the query string.",
              "default": false,
              "type": "boolean"
            },
            "auto_generate_synonyms_phrase_query": {
              "description": "If `true`, the parser creates a match_phrase query for each multi-position token.",
              "default": true,
              "type": "boolean"
            },
            "default_operator": {
              "description": "Default boolean logic used to interpret text in the query string if no operators are specified.",
              "default": "'or'",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.Operator"
                }
              ]
            },
            "fields": {
              "description": "Array of fields you wish to search.\nAccepts wildcard expressions.\nYou also can boost relevance scores for matches to particular fields using a caret (`^`) notation.\nDefaults to the `index.query.default_field index` setting, which has a default value of `*`.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.Field"
              }
            },
            "flags": {
              "description": "List of enabled operators for the simple query string syntax.",
              "default": "ALL",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SimpleQueryStringFlags"
                }
              ]
            },
            "fuzzy_max_expansions": {
              "description": "Maximum number of terms to which the query expands for fuzzy matching.",
              "default": 50.0,
              "type": "number"
            },
            "fuzzy_prefix_length": {
              "description": "Number of beginning characters left unchanged for fuzzy matching.",
              "default": 0.0,
              "type": "number"
            },
            "fuzzy_transpositions": {
              "description": "If `true`, edits for fuzzy matching include transpositions of two adjacent characters (for example, `ab` to `ba`).",
              "type": "boolean"
            },
            "lenient": {
              "description": "If `true`, format-based errors, such as providing a text value for a numeric field, are ignored.",
              "default": false,
              "type": "boolean"
            },
            "minimum_should_match": {
              "description": "Minimum number of clauses that must match for a document to be returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "query": {
              "description": "Query string in the simple query string syntax you wish to parse and use for search.",
              "type": "string"
            },
            "quote_field_suffix": {
              "description": "Suffix appended to quoted text in the query string.",
              "type": "string"
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanContainingQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "big": {
              "description": "Can be any span query.\nMatching spans from `big` that contain matches from `little` are returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SpanQuery"
                }
              ]
            },
            "little": {
              "description": "Can be any span query.\nMatching spans from `big` that contain matches from `little` are returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SpanQuery"
                }
              ]
            }
          },
          "required": [
            "big",
            "little"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanFieldMaskingQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "field": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "query": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SpanQuery"
                }
              ]
            }
          },
          "required": [
            "field",
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanFirstQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "end": {
              "description": "Controls the maximum end position permitted in a match.",
              "type": "number"
            },
            "match": {
              "description": "Can be any other span type query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SpanQuery"
                }
              ]
            }
          },
          "required": [
            "end",
            "match"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanGapQuery": {
      "description": "Can only be used as a clause in a span_near query.",
      "type": "object",
      "additionalProperties": {
        "type": "number"
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.query_dsl.SpanMultiTermQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "match": {
              "description": "Should be a multi term query (one of `wildcard`, `fuzzy`, `prefix`, `range`, or `regexp` query).",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.QueryContainer"
                }
              ]
            }
          },
          "required": [
            "match"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanNearQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "clauses": {
              "description": "Array of one or more other span type queries.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.query_dsl.SpanQuery"
              }
            },
            "in_order": {
              "description": "Controls whether matches are required to be in-order.",
              "type": "boolean"
            },
            "slop": {
              "description": "Controls the maximum number of intervening unmatched positions permitted.",
              "type": "number"
            }
          },
          "required": [
            "clauses"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanNotQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "dist": {
              "description": "The number of tokens from within the include span that can’t have overlap with the exclude span.\nEquivalent to setting both `pre` and `post`.",
              "type": "number"
            },
            "exclude": {
              "description": "Span query whose matches must not overlap those returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SpanQuery"
                }
              ]
            },
            "include": {
              "description": "Span query whose matches are filtered.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SpanQuery"
                }
              ]
            },
            "post": {
              "description": "The number of tokens after the include span that can’t have overlap with the exclude span.",
              "default": 0.0,
              "type": "number"
            },
            "pre": {
              "description": "The number of tokens before the include span that can’t have overlap with the exclude span.",
              "default": 0.0,
              "type": "number"
            }
          },
          "required": [
            "exclude",
            "include"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanOrQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "clauses": {
              "description": "Array of one or more other span type queries.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.query_dsl.SpanQuery"
              }
            }
          },
          "required": [
            "clauses"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanQuery": {
      "type": "object",
      "properties": {
        "span_containing": {
          "description": "Accepts a list of span queries, but only returns those spans which also match a second span query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanContainingQuery"
            }
          ]
        },
        "span_field_masking": {
          "description": "Allows queries like `span_near` or `span_or` across different fields.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanFieldMaskingQuery"
            }
          ]
        },
        "span_first": {
          "description": "Accepts another span query whose matches must appear within the first N positions of the field.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanFirstQuery"
            }
          ]
        },
        "span_gap": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanGapQuery"
            }
          ]
        },
        "span_multi": {
          "description": "Wraps a `term`, `range`, `prefix`, `wildcard`, `regexp`, or `fuzzy` query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanMultiTermQuery"
            }
          ]
        },
        "span_near": {
          "description": "Accepts multiple span queries whose matches must be within the specified distance of each other, and possibly in the same order.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanNearQuery"
            }
          ]
        },
        "span_not": {
          "description": "Wraps another span query, and excludes any documents which match that query.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanNotQuery"
            }
          ]
        },
        "span_or": {
          "description": "Combines multiple span queries and returns documents which match any of the specified queries.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanOrQuery"
            }
          ]
        },
        "span_term": {
          "description": "The equivalent of the `term` query but for use with other span queries.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.query_dsl.SpanTermQuery"
          },
          "minProperties": 1,
          "maxProperties": 1
        },
        "span_within": {
          "description": "The result from a single span query is returned as long is its span falls within the spans returned by a list of other span queries.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.SpanWithinQuery"
            }
          ]
        }
      },
      "minProperties": 1,
      "maxProperties": 1
    },
    "_types.query_dsl.SpanTermQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "value": {
              "allOf": [
                {
                  "$ref": "#/$defs/_types.FieldValue"
                }
              ]
            }
          },
          "required": [
            "value"
          ]
        }
      ]
    },
    "_types.query_dsl.SpanWithinQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "big": {
              "description": "Can be any span query.\nMatching spans from `little` that are enclosed within `big` are returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SpanQuery"
                }
              ]
            },
            "little": {
              "description": "Can be any span query.\nMatching spans from `little` that are enclosed within `big` are returned.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.query_dsl.SpanQuery"
                }
              ]
            }
          },
          "required": [
            "big",
            "little"
          ]
        }
      ]
    },
    "_types.query_dsl.SparseVectorQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "allOf": [
            {
              "type": "object",
              "properties": {
                "field": {
                  "description": "The name of the field that contains the token-weight pairs to be searched against.\nThis field must be a mapped sparse_vector field.",
                  "allOf": [
                    {
                      "$ref": "#/$defs/_types.Field"
                    }
                  ]
                },
                "query": {
                  "description": "The query text you want to use for search.\nIf inference_id is specified, query must also be specified.",
                  "type": "string"
                },
                "prune": {
                  "description": "Whether to perform pruning, omitting the non-significant tokens from the query to improve query performance.\nIf prune is true but the pruning_config is not specified, pruning will occur but default values will be used.\nDefault: false",
                  "x-state": "Generally available; Added in 8.15.0",
                  "type": "boolean"
                },
                "pruning_config": {
                  "description": "Optional pruning configuration.\nIf enabled, this will omit non-significant tokens from the query in order to improve query performance.\nThis is only used if prune is set to true.\nIf prune is set to true but pruning_config is not specified, default values will be used.",
                  "x-state": "Generally available; Added in 8.15.0",
                  "allOf": [
                    {
                      "$ref": "#/$defs/_types.TokenPruningConfig"
                    }
                  ]
                }
              },
              "required": [
                "field"
              ]
            },
            {
              "type": "object",
              "properties": {
                "query_vector": {
                  "description": "Dictionary of precomputed sparse vectors and their associated weights.\nOnly one of inference_id or query_vector may be supplied in a request.",
                  "type": "object",
                  "additionalProperties": {
                    "type": "number"
                  }
                },
                "inference_id": {
                  "description": "The inference ID to use to convert the query text into token-weight pairs.\nIt must be the same inference ID that was used to create the tokens from the input text.\nOnly one of inference_id and query_vector is allowed.\nIf inference_id is specified, query must also be specified.\nOnly one of inference_id or query_vector may be supplied in a request.",
                  "allOf": [
                    {
                      "$ref": "#/$defs/_types.Id"
                    }
                  ]
                }
              },
              "minProperties": 1,
              "maxProperties": 1
            }
          ]
        }
      ]
    },
    "_types.query_dsl.TermQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "value": {
              "description": "Term you wish to find in the provided field.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.FieldValue"
                }
              ]
            },
            "case_insensitive": {
              "description": "Allows ASCII case insensitive matching of the value with the indexed field values when set to `true`.\nWhen `false`, the case sensitivity of matching depends on the underlying field’s mapping.",
              "default": false,
              "x-state": "Generally available; Added in 7.10.0",
              "type": "boolean"
            }
          },
          "required": [
            "value"
          ]
        }
      ]
    },
    "_types.query_dsl.TermRangeQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.RangeQueryBasestring"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.TermsQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.TermsSetQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "minimum_should_match": {
              "description": "Specification describing number of matching terms required to return a document.",
              "x-state": "Generally available; Added in 8.10.0",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MinimumShouldMatch"
                }
              ]
            },
            "minimum_should_match_field": {
              "description": "Numeric field containing the number of matching terms required to return a document.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Field"
                }
              ]
            },
            "minimum_should_match_script": {
              "description": "Custom script containing the number of matching terms required to return a document.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.Script"
                }
              ]
            },
            "terms": {
              "description": "Array of terms you wish to find in the provided field.",
              "type": "array",
              "items": {
                "$ref": "#/$defs/_types.FieldValue"
              }
            }
          },
          "required": [
            "terms"
          ]
        }
      ]
    },
    "_types.query_dsl.TextExpansionQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "model_id": {
              "description": "The text expansion NLP model to use",
              "type": "string"
            },
            "model_text": {
              "description": "The query text",
              "type": "string"
            },
            "pruning_config": {
              "description": "Token pruning configurations",
              "x-state": "Technical preview; Added in 8.13.0",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TokenPruningConfig"
                }
              ]
            }
          },
          "required": [
            "model_id",
            "model_text"
          ]
        }
      ]
    },
    "_types.query_dsl.TextQueryType": {
      "type": "string",
      "enum": [
        "best_fields",
        "most_fields",
        "cross_fields",
        "phrase",
        "phrase_prefix",
        "bool_prefix"
      ]
    },
    "_types.query_dsl.TypeQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "value": {
              "type": "string"
            }
          },
          "required": [
            "value"
          ]
        }
      ]
    },
    "_types.query_dsl.UntypedDecayFunction": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.DecayFunctionBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.UntypedDistanceFeatureQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.DistanceFeatureQueryBase"
        },
        {
          "type": "object"
        }
      ]
    },
    "_types.query_dsl.UntypedRangeQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.RangeQueryBase"
        },
        {
          "type": "object",
          "properties": {
            "format": {
              "description": "Date format used to convert `date` values in the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.DateFormat"
                }
              ]
            },
            "time_zone": {
              "description": "Coordinated Universal Time (UTC) offset or IANA time zone used to convert `date` values in the query to UTC.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TimeZone"
                }
              ]
            }
          }
        }
      ]
    },
    "_types.query_dsl.WeightedTokensQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "tokens": {
              "description": "The tokens representing this query",
              "oneOf": [
                {
                  "type": "object",
                  "additionalProperties": {
                    "type": "number"
                  }
                },
                {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "number"
                    }
                  }
                }
              ]
            },
            "pruning_config": {
              "description": "Token pruning configurations",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.TokenPruningConfig"
                }
              ]
            }
          },
          "required": [
            "tokens"
          ]
        }
      ]
    },
    "_types.query_dsl.WildcardQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "case_insensitive": {
              "description": "Allows case insensitive matching of the pattern with the indexed field values when set to true. Default is false which means the case sensitivity of matching depends on the underlying field’s mapping.",
              "x-state": "Generally available; Added in 7.10.0",
              "type": "boolean"
            },
            "rewrite": {
              "description": "Method used to rewrite the query.",
              "allOf": [
                {
                  "$ref": "#/$defs/_types.MultiTermQueryRewrite"
                }
              ]
            },
            "value": {
              "description": "Wildcard pattern for terms you wish to find in the provided field. Required, when wildcard is not set.",
              "type": "string"
            },
            "wildcard": {
              "description": "Wildcard pattern for terms you wish to find in the provided field. Required, when value is not set.",
              "type": "string"
            }
          }
        }
      ]
    },
    "_types.query_dsl.WrapperQuery": {
      "allOf": [
        {
          "$ref": "#/$defs/_types.query_dsl.QueryBase"
        },
        {
          "type": "object",
          "properties": {
            "query": {
              "description": "A base64 encoded query.\nThe binary data format can be any of JSON, YAML, CBOR or SMILE encodings",
              "type": "string"
            }
          },
          "required": [
            "query"
          ]
        }
      ]
    },
    "_types.query_dsl.ZeroTermsQuery": {
      "type": "string",
      "enum": [
        "all",
        "none"
      ]
    },
    "_types.short": {
      "type": "number"
    },
    "_types.ulong": {
      "type": "number"
    },
    "indices._types.Alias": {
      "type": "object",
      "properties": {
        "filter": {
          "description": "Query used to limit documents the alias can access.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.query_dsl.QueryContainer"
            }
          ]
        },
        "index_routing": {
          "description": "Value used to route indexing operations to a specific shard.\nIf specified, this overwrites the `routing` value for indexing operations.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Routing"
            }
          ]
        },
        "is_hidden": {
          "description": "If `true`, the alias is hidden.\nAll indices for the alias must have the same `is_hidden` value.",
          "default": false,
          "type": "boolean"
        },
        "is_write_index": {
          "description": "If `true`, the index is the write index for the alias.",
          "default": false,
          "type": "boolean"
        },
        "routing": {
          "description": "Value used to route indexing and search operations to a specific shard.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Routing"
            }
          ]
        },
        "search_routing": {
          "description": "Value used to route search operations to a specific shard.\nIf specified, this overwrites the `routing` value for search operations.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Routing"
            }
          ]
        }
      }
    },
    "indices._types.CacheQueries": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "indices._types.DataStreamFailureStore": {
      "description": "Data stream failure store contains the configuration of the failure store for a given data stream.",
      "type": "object",
      "properties": {
        "enabled": {
          "description": "If defined, it turns the failure store on/off (`true`/`false`) for this data stream. A data stream failure store\nthat's disabled (enabled: `false`) will redirect no new failed indices to the failure store; however, it will\nnot remove any existing data from the failure store.",
          "default": true,
          "type": "boolean"
        },
        "lifecycle": {
          "description": "If defined, it specifies the lifecycle configuration for the failure store of this data stream.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.FailureStoreLifecycle"
            }
          ]
        }
      }
    },
    "indices._types.DataStreamLifecycle": {
      "description": "Data stream lifecycle denotes that a data stream is managed by the data stream lifecycle and contains the configuration.",
      "type": "object",
      "properties": {
        "data_retention": {
          "description": "If defined, every document added to this data stream will be stored at least for this time frame.\nAny time after this duration the document could be deleted.\nWhen empty, every document in this data stream will be stored indefinitely.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "downsampling": {
          "description": "The list of downsampling rounds to execute as part of this downsampling configuration",
          "type": "array",
          "items": {
            "$ref": "#/$defs/indices._types.DownsamplingRound"
          }
        },
        "downsampling_method": {
          "description": "The method used to downsample the data. There are two options `aggregate` and `last_value`. It requires\n`downsampling` to be defined. Defaults to `aggregate`.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SamplingMethod"
            }
          ]
        },
        "enabled": {
          "description": "If defined, it turns data stream lifecycle on/off (`true`/`false`) for this data stream. A data stream lifecycle\nthat's disabled (enabled: `false`) will have no effect on the data stream.",
          "default": true,
          "type": "boolean"
        }
      }
    },
    "indices._types.DataStreamLifecycleRolloverConditions": {
      "type": "object",
      "properties": {
        "min_age": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "max_age": {
          "type": "string"
        },
        "min_docs": {
          "type": "number"
        },
        "max_docs": {
          "type": "number"
        },
        "min_size": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ByteSize"
            }
          ]
        },
        "max_size": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ByteSize"
            }
          ]
        },
        "min_primary_shard_size": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ByteSize"
            }
          ]
        },
        "max_primary_shard_size": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.ByteSize"
            }
          ]
        },
        "min_primary_shard_docs": {
          "type": "number"
        },
        "max_primary_shard_docs": {
          "type": "number"
        }
      }
    },
    "indices._types.DataStreamLifecycleWithRollover": {
      "description": "Data stream lifecycle with rollover can be used to display the configuration including the default rollover conditions,\nif asked.",
      "allOf": [
        {
          "$ref": "#/$defs/indices._types.DataStreamLifecycle"
        },
        {
          "type": "object",
          "properties": {
            "rollover": {
              "description": "The conditions which will trigger the rollover of a backing index as configured by the cluster setting `cluster.lifecycle.default.rollover`.\nThis property is an implementation detail and it will only be retrieved when the query param `include_defaults` is set to true.\nThe contents of this field are subject to change.",
              "allOf": [
                {
                  "$ref": "#/$defs/indices._types.DataStreamLifecycleRolloverConditions"
                }
              ]
            }
          }
        }
      ]
    },
    "indices._types.DataStreamOptions": {
      "description": "Data stream options contain the configuration of data stream level features for a given data stream, for example,\nthe failure store configuration.",
      "type": "object",
      "properties": {
        "failure_store": {
          "description": "If defined, it specifies configuration for the failure store of this data stream.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.DataStreamFailureStore"
            }
          ]
        }
      }
    },
    "indices._types.DownsamplingRound": {
      "type": "object",
      "properties": {
        "after": {
          "description": "The duration since rollover when this downsampling round should execute",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "fixed_interval": {
          "description": "The downsample interval.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.DurationLarge"
            }
          ]
        }
      },
      "required": [
        "after",
        "fixed_interval"
      ]
    },
    "indices._types.FailureStoreLifecycle": {
      "description": "The failure store lifecycle configures the data stream lifecycle configuration for failure indices.",
      "type": "object",
      "properties": {
        "data_retention": {
          "description": "If defined, every document added to this data stream will be stored at least for this time frame.\nAny time after this duration the document could be deleted.\nWhen empty, every document in this data stream will be stored indefinitely.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "enabled": {
          "description": "If defined, it turns data stream lifecycle on/off (`true`/`false`) for this data stream. A data stream lifecycle\nthat's disabled (enabled: `false`) will have no effect on the data stream.",
          "default": true,
          "type": "boolean"
        }
      }
    },
    "indices._types.FielddataFrequencyFilter": {
      "type": "object",
      "properties": {
        "max": {
          "type": "number"
        },
        "min": {
          "type": "number"
        },
        "min_segment_size": {
          "type": "number"
        }
      },
      "required": [
        "max",
        "min",
        "min_segment_size"
      ]
    },
    "indices._types.IndexCheckOnStartup": {
      "type": "string",
      "enum": [
        "true",
        "false",
        "checksum"
      ]
    },
    "indices._types.IndexRouting": {
      "type": "object",
      "properties": {
        "allocation": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexRoutingAllocation"
            }
          ]
        },
        "rebalance": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexRoutingRebalance"
            }
          ]
        }
      }
    },
    "indices._types.IndexRoutingAllocation": {
      "type": "object",
      "properties": {
        "enable": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexRoutingAllocationOptions"
            }
          ]
        },
        "include": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexRoutingAllocationInclude"
            }
          ]
        },
        "initial_recovery": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexRoutingAllocationInitialRecovery"
            }
          ]
        },
        "disk": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexRoutingAllocationDisk"
            }
          ]
        }
      }
    },
    "indices._types.IndexRoutingAllocationDisk": {
      "type": "object",
      "properties": {
        "threshold_enabled": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            }
          ]
        }
      }
    },
    "indices._types.IndexRoutingAllocationInclude": {
      "type": "object",
      "properties": {
        "_tier_preference": {
          "type": "string"
        },
        "_id": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        }
      }
    },
    "indices._types.IndexRoutingAllocationInitialRecovery": {
      "type": "object",
      "properties": {
        "_id": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Id"
            }
          ]
        }
      }
    },
    "indices._types.IndexRoutingAllocationOptions": {
      "type": "string",
      "enum": [
        "all",
        "primaries",
        "new_primaries",
        "none"
      ]
    },
    "indices._types.IndexRoutingRebalance": {
      "type": "object",
      "properties": {
        "enable": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexRoutingRebalanceOptions"
            }
          ]
        }
      },
      "required": [
        "enable"
      ]
    },
    "indices._types.IndexRoutingRebalanceOptions": {
      "type": "string",
      "enum": [
        "all",
        "primaries",
        "replicas",
        "none"
      ]
    },
    "indices._types.IndexSegmentSort": {
      "type": "object",
      "properties": {
        "field": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Fields"
            }
          ]
        },
        "order": {
          "description": "\n\nSupported values include: `asc` (or `ASC`), `desc` (or `DESC`)\n\n",
          "oneOf": [
            {
              "$ref": "#/$defs/indices._types.SegmentSortOrder"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/indices._types.SegmentSortOrder"
              }
            }
          ]
        },
        "mode": {
          "description": "\n\nSupported values include: `min` (or `MIN`), `max` (or `MAX`)\n\n",
          "oneOf": [
            {
              "$ref": "#/$defs/indices._types.SegmentSortMode"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/indices._types.SegmentSortMode"
              }
            }
          ]
        },
        "missing": {
          "description": "\n\nSupported values include: `_last`, `_first`\n\n",
          "oneOf": [
            {
              "$ref": "#/$defs/indices._types.SegmentSortMissing"
            },
            {
              "type": "array",
              "items": {
                "$ref": "#/$defs/indices._types.SegmentSortMissing"
              }
            }
          ]
        }
      }
    },
    "indices._types.IndexSettingBlocks": {
      "type": "object",
      "properties": {
        "read_only": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
            }
          ]
        },
        "read_only_allow_delete": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
            }
          ]
        },
        "read": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
            }
          ]
        },
        "write": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
            }
          ]
        },
        "metadata": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
            }
          ]
        }
      }
    },
    "indices._types.IndexSettings": {
      "type": "object",
      "properties": {
        "index": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSettings"
            }
          ]
        },
        "mode": {
          "type": "string"
        },
        "routing_path": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          ]
        },
        "soft_deletes": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SoftDeletes"
            }
          ]
        },
        "sort": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSegmentSort"
            }
          ]
        },
        "number_of_shards": {
          "default": "1",
          "x-state": "Generally available",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ]
        },
        "number_of_replicas": {
          "default": "0",
          "x-state": "Generally available",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ]
        },
        "number_of_routing_shards": {
          "type": "number"
        },
        "check_on_startup": {
          "default": "false",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexCheckOnStartup"
            }
          ]
        },
        "codec": {
          "default": "LZ4",
          "type": "string"
        },
        "routing_partition_size": {
          "default": "1",
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
            }
          ]
        },
        "load_fixed_bitset_filters_eagerly": {
          "default": true,
          "type": "boolean"
        },
        "hidden": {
          "default": "false",
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            }
          ]
        },
        "auto_expand_replicas": {
          "default": "false",
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "#/$defs/_spec_utils.NullValue"
            }
          ]
        },
        "merge": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.Merge"
            }
          ]
        },
        "search": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SettingsSearch"
            }
          ]
        },
        "refresh_interval": {
          "default": "1s",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "max_result_window": {
          "default": 10000.0,
          "type": "number"
        },
        "max_inner_result_window": {
          "default": 100.0,
          "type": "number"
        },
        "max_rescore_window": {
          "default": 10000.0,
          "type": "number"
        },
        "max_docvalue_fields_search": {
          "default": 100.0,
          "type": "number"
        },
        "max_script_fields": {
          "default": 32.0,
          "type": "number"
        },
        "max_ngram_diff": {
          "default": 1.0,
          "type": "number"
        },
        "max_shingle_diff": {
          "default": 3.0,
          "type": "number"
        },
        "blocks": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSettingBlocks"
            }
          ]
        },
        "max_refresh_listeners": {
          "type": "number"
        },
        "analyze": {
          "description": "Settings to define analyzers, tokenizers, token filters and character filters.\nRefer to the linked documentation for step-by-step examples of updating analyzers on existing indices.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SettingsAnalyze"
            }
          ]
        },
        "highlight": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SettingsHighlight"
            }
          ]
        },
        "max_terms_count": {
          "default": 65536.0,
          "type": "number"
        },
        "max_regex_length": {
          "default": 1000.0,
          "type": "number"
        },
        "routing": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexRouting"
            }
          ]
        },
        "gc_deletes": {
          "default": "60s",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "default_pipeline": {
          "default": "_none",
          "allOf": [
            {
              "$ref": "#/$defs/_types.PipelineName"
            }
          ]
        },
        "final_pipeline": {
          "default": "_none",
          "allOf": [
            {
              "$ref": "#/$defs/_types.PipelineName"
            }
          ]
        },
        "lifecycle": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSettingsLifecycle"
            }
          ]
        },
        "provided_name": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Name"
            }
          ]
        },
        "creation_date": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.StringifiedEpochTimeUnitMillis"
            }
          ]
        },
        "creation_date_string": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.DateTime"
            }
          ]
        },
        "uuid": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Uuid"
            }
          ]
        },
        "version": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexVersioning"
            }
          ]
        },
        "verified_before_close": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            }
          ]
        },
        "format": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "number"
            }
          ]
        },
        "max_slices_per_scroll": {
          "type": "number"
        },
        "translog": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.Translog"
            }
          ]
        },
        "query_string": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SettingsQueryString"
            }
          ]
        },
        "priority": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ]
        },
        "top_metrics_max_size": {
          "type": "number"
        },
        "analysis": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSettingsAnalysis"
            }
          ]
        },
        "settings": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSettings"
            }
          ]
        },
        "time_series": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSettingsTimeSeries"
            }
          ]
        },
        "queries": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.Queries"
            }
          ]
        },
        "similarity": {
          "description": "Configure custom similarity settings to customize how search results are scored.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/indices._types.SettingsSimilarity"
          }
        },
        "mapping": {
          "description": "Enable or disable dynamic mapping for an index.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MappingLimitSettings"
            }
          ]
        },
        "indexing.slowlog": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexingSlowlogSettings"
            }
          ]
        },
        "indexing_pressure": {
          "description": "Configure indexing back pressure limits.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexingPressure"
            }
          ]
        },
        "store": {
          "description": "The store module allows you to control how index data is stored and accessed on disk.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.Storage"
            }
          ]
        }
      }
    },
    "indices._types.IndexSettingsAnalysis": {
      "type": "object",
      "properties": {
        "analyzer": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.analysis.Analyzer"
          }
        },
        "char_filter": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.analysis.CharFilter"
          }
        },
        "filter": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.analysis.TokenFilter"
          }
        },
        "normalizer": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.analysis.Normalizer"
          }
        },
        "tokenizer": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/_types.analysis.Tokenizer"
          }
        }
      }
    },
    "indices._types.IndexSettingsLifecycle": {
      "type": "object",
      "properties": {
        "name": {
          "description": "The name of the policy to use to manage the index. For information about how Elasticsearch applies policy changes, see Policy updates.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Name"
            }
          ]
        },
        "indexing_complete": {
          "description": "Indicates whether or not the index has been rolled over. Automatically set to true when ILM completes the rollover action.\nYou can explicitly set it to skip rollover.",
          "default": "false",
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
            }
          ]
        },
        "origination_date": {
          "description": "If specified, this is the timestamp used to calculate the index age for its phase transitions. Use this setting\nif you create a new index that contains old data and want to use the original creation date to calculate the index\nage. Specified as a Unix epoch value in milliseconds.",
          "default": 0.0,
          "type": "number"
        },
        "parse_origination_date": {
          "description": "Set to true to parse the origination date from the index name. This origination date is used to calculate the index age\nfor its phase transitions. The index name must match the pattern ^.*-{date_format}-\\\\d+, where the date_format is\nyyyy.MM.dd and the trailing digits are optional. An index that was rolled over would normally match the full format,\nfor example logs-2016.10.31-000002). If the index name doesn’t match the pattern, index creation fails.",
          "type": "boolean"
        },
        "step": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSettingsLifecycleStep"
            }
          ]
        },
        "rollover_alias": {
          "description": "The index alias to update when the index rolls over. Specify when using a policy that contains a rollover action.\nWhen the index rolls over, the alias is updated to reflect that the index is no longer the write index. For more\ninformation about rolling indices, see Rollover.",
          "default": "",
          "type": "string"
        },
        "prefer_ilm": {
          "description": "Preference for the system that manages a data stream backing index (preferring ILM when both ILM and DLM are\napplicable for an index).",
          "default": "true",
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            }
          ]
        }
      }
    },
    "indices._types.IndexSettingsLifecycleStep": {
      "type": "object",
      "properties": {
        "wait_time_threshold": {
          "description": "Time to wait for the cluster to resolve allocation issues during an ILM shrink action. Must be greater than 1h (1 hour).\nSee Shard allocation for shrink.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        }
      }
    },
    "indices._types.IndexSettingsTimeSeries": {
      "type": "object",
      "properties": {
        "end_time": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.DateTime"
            }
          ]
        },
        "start_time": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.DateTime"
            }
          ]
        }
      }
    },
    "indices._types.IndexTemplateDataStreamConfiguration": {
      "type": "object",
      "properties": {
        "hidden": {
          "description": "If true, the data stream is hidden.",
          "default": false,
          "type": "boolean"
        },
        "allow_custom_routing": {
          "description": "If true, the data stream supports custom routing.",
          "default": false,
          "type": "boolean"
        }
      }
    },
    "indices._types.IndexTemplateSummary": {
      "type": "object",
      "properties": {
        "aliases": {
          "description": "Aliases to add.\nIf the index template includes a `data_stream` object, these are data stream aliases.\nOtherwise, these are index aliases.\nData stream aliases ignore the `index_routing`, `routing`, and `search_routing` options.",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/indices._types.Alias"
          }
        },
        "mappings": {
          "description": "Mapping for fields in the index.\nIf specified, this mapping can include field names, field data types, and mapping parameters.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.mapping.TypeMapping"
            }
          ]
        },
        "settings": {
          "description": "Configuration options for the index.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexSettings"
            }
          ]
        },
        "lifecycle": {
          "x-state": "Generally available; Added in 8.11.0",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.DataStreamLifecycleWithRollover"
            }
          ]
        },
        "data_stream_options": {
          "x-state": "Generally available; Added in 8.19.0",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.DataStreamOptions"
            }
          ]
        }
      }
    },
    "indices._types.IndexVersioning": {
      "type": "object",
      "properties": {
        "created": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.VersionString"
            }
          ]
        },
        "created_string": {
          "type": "string"
        }
      }
    },
    "indices._types.IndexingPressure": {
      "type": "object",
      "properties": {
        "memory": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexingPressureMemory"
            }
          ]
        }
      },
      "required": [
        "memory"
      ]
    },
    "indices._types.IndexingPressureMemory": {
      "type": "object",
      "properties": {
        "limit": {
          "description": "Number of outstanding bytes that may be consumed by indexing requests. When this limit is reached or exceeded,\nthe node will reject new coordinating and primary operations. When replica operations consume 1.5x this limit,\nthe node will reject new replica operations. Defaults to 10% of the heap.",
          "type": "number"
        }
      }
    },
    "indices._types.IndexingSlowlogSettings": {
      "type": "object",
      "properties": {
        "level": {
          "type": "string"
        },
        "source": {
          "type": "number"
        },
        "reformat": {
          "type": "boolean"
        },
        "threshold": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.IndexingSlowlogTresholds"
            }
          ]
        }
      }
    },
    "indices._types.IndexingSlowlogTresholds": {
      "type": "object",
      "properties": {
        "index": {
          "description": "The indexing slow log, similar in functionality to the search slow log. The log file name ends with `_index_indexing_slowlog.json`.\nLog and the thresholds are configured in the same way as the search slowlog.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SlowlogTresholdLevels"
            }
          ]
        }
      }
    },
    "indices._types.MappingLimitSettings": {
      "description": "Mapping Limit Settings",
      "type": "object",
      "properties": {
        "coerce": {
          "type": "boolean"
        },
        "total_fields": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MappingLimitSettingsTotalFields"
            }
          ]
        },
        "depth": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MappingLimitSettingsDepth"
            }
          ]
        },
        "nested_fields": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MappingLimitSettingsNestedFields"
            }
          ]
        },
        "nested_objects": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MappingLimitSettingsNestedObjects"
            }
          ]
        },
        "field_name_length": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MappingLimitSettingsFieldNameLength"
            }
          ]
        },
        "dimension_fields": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MappingLimitSettingsDimensionFields"
            }
          ]
        },
        "source": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MappingLimitSettingsSourceFields"
            }
          ]
        },
        "ignore_malformed": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            }
          ]
        }
      }
    },
    "indices._types.MappingLimitSettingsDepth": {
      "type": "object",
      "properties": {
        "limit": {
          "description": "The maximum depth for a field, which is measured as the number of inner objects. For instance, if all fields are defined\nat the root object level, then the depth is 1. If there is one object mapping, then the depth is 2, etc.",
          "default": 20.0,
          "type": "number"
        }
      }
    },
    "indices._types.MappingLimitSettingsDimensionFields": {
      "type": "object",
      "properties": {
        "limit": {
          "description": "[preview] This functionality is in technical preview and may be changed or removed in a future release.\nElastic will work to fix any issues, but features in technical preview are not subject to the support SLA of official GA features.",
          "type": "number"
        }
      }
    },
    "indices._types.MappingLimitSettingsFieldNameLength": {
      "type": "object",
      "properties": {
        "limit": {
          "description": "Setting for the maximum length of a field name. This setting isn’t really something that addresses mappings explosion but\nmight still be useful if you want to limit the field length. It usually shouldn’t be necessary to set this setting. The\ndefault is okay unless a user starts to add a huge number of fields with really long names. Default is `Long.MAX_VALUE` (no limit).",
          "type": "number"
        }
      }
    },
    "indices._types.MappingLimitSettingsNestedFields": {
      "type": "object",
      "properties": {
        "limit": {
          "description": "The maximum number of distinct nested mappings in an index. The nested type should only be used in special cases, when\narrays of objects need to be queried independently of each other. To safeguard against poorly designed mappings, this\nsetting limits the number of unique nested types per index.",
          "default": 50.0,
          "type": "number"
        }
      }
    },
    "indices._types.MappingLimitSettingsNestedObjects": {
      "type": "object",
      "properties": {
        "limit": {
          "description": "The maximum number of nested JSON objects that a single document can contain across all nested types. This limit helps\nto prevent out of memory errors when a document contains too many nested objects.",
          "default": 10000.0,
          "type": "number"
        }
      }
    },
    "indices._types.MappingLimitSettingsSourceFields": {
      "type": "object",
      "properties": {
        "mode": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SourceMode"
            }
          ]
        }
      },
      "required": [
        "mode"
      ]
    },
    "indices._types.MappingLimitSettingsTotalFields": {
      "type": "object",
      "properties": {
        "limit": {
          "description": "The maximum number of fields in an index. Field and object mappings, as well as field aliases count towards this limit.\nThe limit is in place to prevent mappings and searches from becoming too large. Higher values can lead to performance\ndegradations and memory issues, especially in clusters with a high load or few resources.",
          "default": "1000",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "string"
            }
          ]
        },
        "ignore_dynamic_beyond_limit": {
          "description": "This setting determines what happens when a dynamically mapped field would exceed the total fields limit. When set\nto false (the default), the index request of the document that tries to add a dynamic field to the mapping will fail\nwith the message Limit of total fields [X] has been exceeded. When set to true, the index request will not fail.\nInstead, fields that would exceed the limit are not added to the mapping, similar to dynamic: false.\nThe fields that were not added to the mapping will be added to the _ignored field.",
          "default": "false",
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "string"
            }
          ]
        }
      }
    },
    "indices._types.Merge": {
      "type": "object",
      "properties": {
        "scheduler": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.MergeScheduler"
            }
          ]
        }
      }
    },
    "indices._types.MergeScheduler": {
      "type": "object",
      "properties": {
        "max_thread_count": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
            }
          ]
        },
        "max_merge_count": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
            }
          ]
        }
      }
    },
    "indices._types.NumericFielddata": {
      "type": "object",
      "properties": {
        "format": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.NumericFielddataFormat"
            }
          ]
        }
      },
      "required": [
        "format"
      ]
    },
    "indices._types.NumericFielddataFormat": {
      "type": "string",
      "enum": [
        "array",
        "disabled"
      ]
    },
    "indices._types.Queries": {
      "type": "object",
      "properties": {
        "cache": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.CacheQueries"
            }
          ]
        }
      }
    },
    "indices._types.RetentionLease": {
      "type": "object",
      "properties": {
        "period": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        }
      },
      "required": [
        "period"
      ]
    },
    "indices._types.SamplingMethod": {
      "type": "string",
      "enum": [
        "aggregate",
        "last_value"
      ]
    },
    "indices._types.SearchIdle": {
      "type": "object",
      "properties": {
        "after": {
          "default": "30s",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        }
      }
    },
    "indices._types.SegmentSortMissing": {
      "type": "string",
      "enum": [
        "_last",
        "_first"
      ]
    },
    "indices._types.SegmentSortMode": {
      "type": "string",
      "enum": [
        "min",
        "MIN",
        "max",
        "MAX"
      ]
    },
    "indices._types.SegmentSortOrder": {
      "type": "string",
      "enum": [
        "asc",
        "ASC",
        "desc",
        "DESC"
      ]
    },
    "indices._types.SettingsAnalyze": {
      "type": "object",
      "properties": {
        "max_token_count": {
          "default": "10000",
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedinteger"
            }
          ]
        }
      }
    },
    "indices._types.SettingsHighlight": {
      "type": "object",
      "properties": {
        "max_analyzed_offset": {
          "default": 1000000.0,
          "type": "number"
        }
      }
    },
    "indices._types.SettingsQueryString": {
      "type": "object",
      "properties": {
        "lenient": {
          "allOf": [
            {
              "$ref": "#/$defs/_spec_utils.Stringifiedboolean"
            }
          ]
        }
      },
      "required": [
        "lenient"
      ]
    },
    "indices._types.SettingsSearch": {
      "type": "object",
      "properties": {
        "idle": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SearchIdle"
            }
          ]
        },
        "slowlog": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SlowlogSettings"
            }
          ]
        }
      }
    },
    "indices._types.SettingsSimilarity": {
      "oneOf": [
        {
          "$ref": "#/$defs/indices._types.SettingsSimilarityBm25"
        },
        {
          "$ref": "#/$defs/indices._types.SettingsSimilarityBoolean"
        },
        {
          "$ref": "#/$defs/indices._types.SettingsSimilarityDfi"
        },
        {
          "$ref": "#/$defs/indices._types.SettingsSimilarityDfr"
        },
        {
          "$ref": "#/$defs/indices._types.SettingsSimilarityIb"
        },
        {
          "$ref": "#/$defs/indices._types.SettingsSimilarityLmd"
        },
        {
          "$ref": "#/$defs/indices._types.SettingsSimilarityLmj"
        },
        {
          "$ref": "#/$defs/indices._types.SettingsSimilarityScripted"
        }
      ]
    },
    "indices._types.SettingsSimilarityBm25": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "BM25"
          ]
        },
        "b": {
          "type": "number"
        },
        "discount_overlaps": {
          "type": "boolean"
        },
        "k1": {
          "type": "number"
        }
      },
      "required": [
        "type"
      ]
    },
    "indices._types.SettingsSimilarityBoolean": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "boolean"
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "indices._types.SettingsSimilarityDfi": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "DFI"
          ]
        },
        "independence_measure": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.DFIIndependenceMeasure"
            }
          ]
        }
      },
      "required": [
        "type",
        "independence_measure"
      ]
    },
    "indices._types.SettingsSimilarityDfr": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "DFR"
          ]
        },
        "after_effect": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.DFRAfterEffect"
            }
          ]
        },
        "basic_model": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.DFRBasicModel"
            }
          ]
        },
        "normalization": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Normalization"
            }
          ]
        }
      },
      "required": [
        "type",
        "after_effect",
        "basic_model",
        "normalization"
      ]
    },
    "indices._types.SettingsSimilarityIb": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "IB"
          ]
        },
        "distribution": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.IBDistribution"
            }
          ]
        },
        "lambda": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.IBLambda"
            }
          ]
        },
        "normalization": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Normalization"
            }
          ]
        }
      },
      "required": [
        "type",
        "distribution",
        "lambda",
        "normalization"
      ]
    },
    "indices._types.SettingsSimilarityLmd": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "LMDirichlet"
          ]
        },
        "mu": {
          "type": "number"
        }
      },
      "required": [
        "type"
      ]
    },
    "indices._types.SettingsSimilarityLmj": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "LMJelinekMercer"
          ]
        },
        "lambda": {
          "type": "number"
        }
      },
      "required": [
        "type"
      ]
    },
    "indices._types.SettingsSimilarityScripted": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "scripted"
          ]
        },
        "script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        },
        "weight_script": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Script"
            }
          ]
        }
      },
      "required": [
        "type",
        "script"
      ]
    },
    "indices._types.SlowlogSettings": {
      "type": "object",
      "properties": {
        "level": {
          "type": "string"
        },
        "source": {
          "type": "number"
        },
        "reformat": {
          "type": "boolean"
        },
        "threshold": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SlowlogTresholds"
            }
          ]
        }
      }
    },
    "indices._types.SlowlogTresholdLevels": {
      "type": "object",
      "properties": {
        "warn": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "info": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "debug": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "trace": {
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        }
      }
    },
    "indices._types.SlowlogTresholds": {
      "type": "object",
      "properties": {
        "query": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SlowlogTresholdLevels"
            }
          ]
        },
        "fetch": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.SlowlogTresholdLevels"
            }
          ]
        }
      }
    },
    "indices._types.SoftDeletes": {
      "type": "object",
      "properties": {
        "enabled": {
          "description": "Indicates whether soft deletes are enabled on the index.",
          "default": true,
          "type": "boolean"
        },
        "retention_lease": {
          "description": "The maximum period to retain a shard history retention lease before it is considered expired.\nShard history retention leases ensure that soft deletes are retained during merges on the Lucene\nindex. If a soft delete is merged away before it can be replicated to a follower the following\nprocess will fail due to incomplete history on the leader.",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.RetentionLease"
            }
          ]
        }
      }
    },
    "indices._types.SourceMode": {
      "type": "string",
      "enum": [
        "disabled",
        "stored",
        "synthetic"
      ]
    },
    "indices._types.Storage": {
      "type": "object",
      "properties": {
        "type": {
          "description": "\n\nSupported values include:\n  - `fs`: Default file system implementation. This will pick the best implementation depending on the operating environment, which\nis currently hybridfs on all supported systems but is subject to change.\n  - `niofs`: The NIO FS type stores the shard index on the file system (maps to Lucene NIOFSDirectory) using NIO. It allows multiple\nthreads to read from the same file concurrently. It is not recommended on Windows because of a bug in the SUN Java\nimplementation and disables some optimizations for heap memory usage.\n  - `mmapfs`: The MMap FS type stores the shard index on the file system (maps to Lucene MMapDirectory) by mapping a file into\nmemory (mmap). Memory mapping uses up a portion of the virtual memory address space in your process equal to the size\nof the file being mapped. Before using this class, be sure you have allowed plenty of virtual address space.\n  - `hybridfs`: The hybridfs type is a hybrid of niofs and mmapfs, which chooses the best file system type for each type of file\nbased on the read access pattern. Currently only the Lucene term dictionary, norms and doc values files are memory\nmapped. All other files are opened using Lucene NIOFSDirectory. Similarly to mmapfs be sure you have allowed\nplenty of virtual address space.\n\n",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.StorageType"
            }
          ]
        },
        "allow_mmap": {
          "description": "You can restrict the use of the mmapfs and the related hybridfs store type via the setting node.store.allow_mmap.\nThis is a boolean setting indicating whether or not memory-mapping is allowed. The default is to allow it. This\nsetting is useful, for example, if you are in an environment where you can not control the ability to create a lot\nof memory maps so you need disable the ability to use memory-mapping.",
          "type": "boolean"
        },
        "stats_refresh_interval": {
          "description": "How often store statistics are refreshed",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        }
      },
      "required": [
        "type"
      ]
    },
    "indices._types.StorageType": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "fs",
            "niofs",
            "mmapfs",
            "hybridfs"
          ]
        },
        {
          "type": "string"
        }
      ]
    },
    "indices._types.Translog": {
      "type": "object",
      "properties": {
        "sync_interval": {
          "description": "How often the translog is fsynced to disk and committed, regardless of write operations.\nValues less than 100ms are not allowed.",
          "default": "5s",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        },
        "durability": {
          "description": "Whether or not to `fsync` and commit the translog after every index, delete, update, or bulk request.\n\nSupported values include:\n  - `request` (or `REQUEST`): (default) fsync and commit after every request. In the event of hardware failure, all acknowledged writes\nwill already have been committed to disk.\n  - `async` (or `ASYNC`): fsync and commit in the background every sync_interval. In the event of a failure, all acknowledged writes\nsince the last automatic commit will be discarded.\n\n",
          "default": "string",
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.TranslogDurability"
            }
          ]
        },
        "flush_threshold_size": {
          "description": "The translog stores all operations that are not yet safely persisted in Lucene (i.e., are not\npart of a Lucene commit point). Although these operations are available for reads, they will need\nto be replayed if the shard was stopped and had to be recovered. This setting controls the\nmaximum total size of these operations, to prevent recoveries from taking too long. Once the\nmaximum size has been reached a flush will happen, generating a new Lucene commit point.",
          "default": "512mb",
          "allOf": [
            {
              "$ref": "#/$defs/_types.ByteSize"
            }
          ]
        },
        "retention": {
          "allOf": [
            {
              "$ref": "#/$defs/indices._types.TranslogRetention"
            }
          ]
        }
      }
    },
    "indices._types.TranslogDurability": {
      "type": "string",
      "enum": [
        "request",
        "REQUEST",
        "async",
        "ASYNC"
      ]
    },
    "indices._types.TranslogRetention": {
      "type": "object",
      "properties": {
        "size": {
          "description": "This controls the total size of translog files to keep for each shard. Keeping more translog files increases\nthe chance of performing an operation based sync when recovering a replica. If the translog files are not\nsufficient, replica recovery will fall back to a file based sync. This setting is ignored, and should not be\nset, if soft deletes are enabled. Soft deletes are enabled by default in indices created in Elasticsearch\nversions 7.0.0 and later.",
          "default": "512mb",
          "allOf": [
            {
              "$ref": "#/$defs/_types.ByteSize"
            }
          ]
        },
        "age": {
          "description": "This controls the maximum duration for which translog files are kept by each shard. Keeping more\ntranslog files increases the chance of performing an operation based sync when recovering replicas. If\nthe translog files are not sufficient, replica recovery will fall back to a file based sync. This setting\nis ignored, and should not be set, if soft deletes are enabled. Soft deletes are enabled by default in\nindices created in Elasticsearch versions 7.0.0 and later.",
          "default": "12h",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Duration"
            }
          ]
        }
      }
    },
    "ml._types.ClassificationInferenceOptions": {
      "type": "object",
      "properties": {
        "num_top_classes": {
          "description": "Specifies the number of top class predictions to return. Defaults to 0.",
          "type": "number"
        },
        "num_top_feature_importance_values": {
          "description": "Specifies the maximum number of feature importance values per document.",
          "default": 0.0,
          "type": "number"
        },
        "prediction_field_type": {
          "description": "Specifies the type of the predicted field to write. Acceptable values are: string, number, boolean. When boolean is provided 1.0 is transformed to true and 0.0 to false.",
          "type": "string"
        },
        "results_field": {
          "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
          "type": "string"
        },
        "top_classes_results_field": {
          "description": "Specifies the field to which the top classes are written. Defaults to top_classes.",
          "type": "string"
        }
      }
    },
    "ml._types.RegressionInferenceOptions": {
      "type": "object",
      "properties": {
        "results_field": {
          "description": "The field that is added to incoming documents to contain the inference prediction. Defaults to predicted_value.",
          "allOf": [
            {
              "$ref": "#/$defs/_types.Field"
            }
          ]
        },
        "num_top_feature_importance_values": {
          "description": "Specifies the maximum number of feature importance values per document.",
          "default": 0.0,
          "type": "number"
        }
      }
    }
  }
}