# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins
import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities
from . import outputs

__all__ = [
    'InstanceInstanceConfiguration',
    'InstanceInstanceConfigurationColdNodeResourceSpec',
    'InstanceInstanceConfigurationColdNodeStorageSpec',
    'InstanceInstanceConfigurationCoordinatorNodeResourceSpec',
    'InstanceInstanceConfigurationCoordinatorNodeStorageSpec',
    'InstanceInstanceConfigurationHotNodeResourceSpec',
    'InstanceInstanceConfigurationHotNodeStorageSpec',
    'InstanceInstanceConfigurationKibanaNodeResourceSpec',
    'InstanceInstanceConfigurationMasterNodeResourceSpec',
    'InstanceInstanceConfigurationMasterNodeStorageSpec',
    'InstanceInstanceConfigurationNetworkSpec',
    'InstanceInstanceConfigurationNodeSpecsAssign',
    'InstanceInstanceConfigurationNodeSpecsAssignExtraPerformance',
    'InstanceInstanceConfigurationSubnet',
    'InstanceInstanceConfigurationTag',
    'InstanceInstanceConfigurationVpc',
    'InstanceInstanceConfigurationWarmNodeResourceSpec',
    'InstanceInstanceConfigurationWarmNodeStorageSpec',
    'InstanceKibanaConfig',
    'InstanceSubInstance',
    'InstanceTransferInfo',
    'InstanceTransferInfoReduceSpecConfig',
    'GetInstanceInstanceConfigurationResult',
    'GetInstanceInstanceConfigurationColdNodeResourceSpecResult',
    'GetInstanceInstanceConfigurationColdNodeStorageSpecResult',
    'GetInstanceInstanceConfigurationCoordinatorNodeResourceSpecResult',
    'GetInstanceInstanceConfigurationCoordinatorNodeStorageSpecResult',
    'GetInstanceInstanceConfigurationHotNodeResourceSpecResult',
    'GetInstanceInstanceConfigurationHotNodeStorageSpecResult',
    'GetInstanceInstanceConfigurationKibanaNodeResourceSpecResult',
    'GetInstanceInstanceConfigurationMasterNodeResourceSpecResult',
    'GetInstanceInstanceConfigurationMasterNodeStorageSpecResult',
    'GetInstanceInstanceConfigurationNetworkSpecResult',
    'GetInstanceInstanceConfigurationNodeSpecsAssignResult',
    'GetInstanceInstanceConfigurationNodeSpecsAssignExtraPerformanceResult',
    'GetInstanceInstanceConfigurationSubnetResult',
    'GetInstanceInstanceConfigurationTagResult',
    'GetInstanceInstanceConfigurationVpcResult',
    'GetInstanceInstanceConfigurationWarmNodeResourceSpecResult',
    'GetInstanceInstanceConfigurationWarmNodeStorageSpecResult',
    'GetInstanceKibanaConfigResult',
    'GetInstanceSubInstanceResult',
    'GetInstanceTransferInfoResult',
    'GetInstanceTransferInfoReduceSpecConfigResult',
]

@pulumi.output_type
class InstanceInstanceConfiguration(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "adminPassword":
            suggest = "admin_password"
        elif key == "adminUserName":
            suggest = "admin_user_name"
        elif key == "autoRenew":
            suggest = "auto_renew"
        elif key == "chargeType":
            suggest = "charge_type"
        elif key == "coldNodeNumber":
            suggest = "cold_node_number"
        elif key == "coldNodeResourceSpec":
            suggest = "cold_node_resource_spec"
        elif key == "coldNodeStorageSpec":
            suggest = "cold_node_storage_spec"
        elif key == "configurationCode":
            suggest = "configuration_code"
        elif key == "coordinatorNodeNumber":
            suggest = "coordinator_node_number"
        elif key == "coordinatorNodeResourceSpec":
            suggest = "coordinator_node_resource_spec"
        elif key == "coordinatorNodeStorageSpec":
            suggest = "coordinator_node_storage_spec"
        elif key == "deletionProtection":
            suggest = "deletion_protection"
        elif key == "enableHttps":
            suggest = "enable_https"
        elif key == "enablePureMaster":
            suggest = "enable_pure_master"
        elif key == "hotNodeNumber":
            suggest = "hot_node_number"
        elif key == "hotNodeResourceSpec":
            suggest = "hot_node_resource_spec"
        elif key == "hotNodeStorageSpec":
            suggest = "hot_node_storage_spec"
        elif key == "instanceName":
            suggest = "instance_name"
        elif key == "kibanaNodeNumber":
            suggest = "kibana_node_number"
        elif key == "kibanaNodeResourceSpec":
            suggest = "kibana_node_resource_spec"
        elif key == "masterNodeNumber":
            suggest = "master_node_number"
        elif key == "masterNodeResourceSpec":
            suggest = "master_node_resource_spec"
        elif key == "masterNodeStorageSpec":
            suggest = "master_node_storage_spec"
        elif key == "networkSpecs":
            suggest = "network_specs"
        elif key == "nodeSpecsAssigns":
            suggest = "node_specs_assigns"
        elif key == "projectName":
            suggest = "project_name"
        elif key == "regionId":
            suggest = "region_id"
        elif key == "warmNodeNumber":
            suggest = "warm_node_number"
        elif key == "warmNodeResourceSpec":
            suggest = "warm_node_resource_spec"
        elif key == "warmNodeStorageSpec":
            suggest = "warm_node_storage_spec"
        elif key == "zoneId":
            suggest = "zone_id"
        elif key == "zoneNumber":
            suggest = "zone_number"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfiguration. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfiguration.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfiguration.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 admin_password: Optional[builtins.str] = None,
                 admin_user_name: Optional[builtins.str] = None,
                 auto_renew: Optional[builtins.bool] = None,
                 charge_type: Optional[builtins.str] = None,
                 cold_node_number: Optional[builtins.int] = None,
                 cold_node_resource_spec: Optional['outputs.InstanceInstanceConfigurationColdNodeResourceSpec'] = None,
                 cold_node_storage_spec: Optional['outputs.InstanceInstanceConfigurationColdNodeStorageSpec'] = None,
                 configuration_code: Optional[builtins.str] = None,
                 coordinator_node_number: Optional[builtins.int] = None,
                 coordinator_node_resource_spec: Optional['outputs.InstanceInstanceConfigurationCoordinatorNodeResourceSpec'] = None,
                 coordinator_node_storage_spec: Optional['outputs.InstanceInstanceConfigurationCoordinatorNodeStorageSpec'] = None,
                 deletion_protection: Optional[builtins.bool] = None,
                 enable_https: Optional[builtins.bool] = None,
                 enable_pure_master: Optional[builtins.bool] = None,
                 hot_node_number: Optional[builtins.int] = None,
                 hot_node_resource_spec: Optional['outputs.InstanceInstanceConfigurationHotNodeResourceSpec'] = None,
                 hot_node_storage_spec: Optional['outputs.InstanceInstanceConfigurationHotNodeStorageSpec'] = None,
                 instance_name: Optional[builtins.str] = None,
                 kibana_node_number: Optional[builtins.int] = None,
                 kibana_node_resource_spec: Optional['outputs.InstanceInstanceConfigurationKibanaNodeResourceSpec'] = None,
                 master_node_number: Optional[builtins.int] = None,
                 master_node_resource_spec: Optional['outputs.InstanceInstanceConfigurationMasterNodeResourceSpec'] = None,
                 master_node_storage_spec: Optional['outputs.InstanceInstanceConfigurationMasterNodeStorageSpec'] = None,
                 network_specs: Optional[Sequence['outputs.InstanceInstanceConfigurationNetworkSpec']] = None,
                 node_specs_assigns: Optional[Sequence['outputs.InstanceInstanceConfigurationNodeSpecsAssign']] = None,
                 period: Optional[builtins.int] = None,
                 project_name: Optional[builtins.str] = None,
                 region_id: Optional[builtins.str] = None,
                 subnet: Optional['outputs.InstanceInstanceConfigurationSubnet'] = None,
                 tags: Optional[Sequence['outputs.InstanceInstanceConfigurationTag']] = None,
                 version: Optional[builtins.str] = None,
                 vpc: Optional['outputs.InstanceInstanceConfigurationVpc'] = None,
                 warm_node_number: Optional[builtins.int] = None,
                 warm_node_resource_spec: Optional['outputs.InstanceInstanceConfigurationWarmNodeResourceSpec'] = None,
                 warm_node_storage_spec: Optional['outputs.InstanceInstanceConfigurationWarmNodeStorageSpec'] = None,
                 zone_id: Optional[builtins.str] = None,
                 zone_number: Optional[builtins.int] = None):
        """
        :param builtins.str admin_password: 管理员密码。
        :param builtins.str admin_user_name: 管理员用户名。
        :param builtins.bool auto_renew: 包年包月实例是否配置自动续费。true：自动续费，系统会在每次到期前自动为实例续费。false：未开启自动续费，需要在实例到期前进行手动续费。如需了解更多，请参见实例续费。
        :param builtins.str charge_type: 实例计费类型。PostPaid：按量计费。PrePaid：包年包月。
        :param builtins.int cold_node_number: 冷节点数量。
        :param 'InstanceInstanceConfigurationColdNodeResourceSpecArgs' cold_node_resource_spec: 冷节点的节点规格配置详情。
        :param 'InstanceInstanceConfigurationColdNodeStorageSpecArgs' cold_node_storage_spec: 冷节点的存储规格配置详情。
        :param builtins.str configuration_code: 计费配置码，可以通过调用DescribeNodeAvailableSpecs接口获得。
        :param builtins.int coordinator_node_number: 协调节点数量。
        :param 'InstanceInstanceConfigurationCoordinatorNodeResourceSpecArgs' coordinator_node_resource_spec: 协调节点的节点规格配置详情。
        :param 'InstanceInstanceConfigurationCoordinatorNodeStorageSpecArgs' coordinator_node_storage_spec: 协调节点的存储规格配置详情。
        :param builtins.bool deletion_protection: 是否开启实例删除保护功能，取值说明如下：true：开启实例删除保护。false：关闭实例删除保护。说明开启实例删除保护后，您将无法通过控制台或者 API 删除实例。
        :param builtins.bool enable_https: 是否启用 HTTPS 访问协议。true：启用 HTTPS 访问。false：不启用 HTTPS，使用 HTTP 访问。说明如果选择使用 HTTP 访问，将无需安全认证即可访问，并使用 HTTP 明文传输数据。您需要确保访问环境的安全性，且不要将访问接口暴露在公网环境上。实例创建完成后，支持根据业务需求修改传输协议。相关文档，请参见切换实例传输协议。
        :param builtins.bool enable_pure_master: Master 节点是否独立。true：Master 节点独立。false：Master 节点与数据节点重合，即使用 Hot 声明。
        :param builtins.int hot_node_number: 数据节点数量。
        :param 'InstanceInstanceConfigurationHotNodeResourceSpecArgs' hot_node_resource_spec: 数据节点的节点规格配置详情。
        :param 'InstanceInstanceConfigurationHotNodeStorageSpecArgs' hot_node_storage_spec: 数据节点的存储规格配置详情。
        :param builtins.str instance_name: 自定义设置实例名称。只能包含中文、字母、数字、短横线（-）和下划线（_），开头和结尾不能是数字和短横线（-）。长度在 1～128 个字符内。
        :param builtins.int kibana_node_number: kibana 节点数量。
        :param 'InstanceInstanceConfigurationKibanaNodeResourceSpecArgs' kibana_node_resource_spec: Kibana 节点的节点规格配置详情。
        :param builtins.int master_node_number: master 节点数量。
        :param 'InstanceInstanceConfigurationMasterNodeResourceSpecArgs' master_node_resource_spec: Master 节点的节点规格配置详情。
        :param 'InstanceInstanceConfigurationMasterNodeStorageSpecArgs' master_node_storage_spec: Master 节点的存储规格配置详情。
        :param builtins.int period: 包年包月实例的购买时长，单位：月。
        :param builtins.str project_name: 按需设置云搜索实例所属的项目，有利于云资源的分组管理。项目是提供的一种资源管理方式，有利于维护资源独立、数据安全；同时可从项目维度查看资源消费账单，便于计算云资源使用成本。如需了解更多信息，请参见项目概述
        :param builtins.str region_id: 实例所在区域。
        :param 'InstanceInstanceConfigurationSubnetArgs' subnet: 设置实例的子网信息。说明设置的子网必须是主可用区中的子网。
        :param builtins.str version: API的版本，取值：2023-01-01。
        :param 'InstanceInstanceConfigurationVpcArgs' vpc: 设置实例的私有网络 VPC 信息。
        :param builtins.int warm_node_number: 温节点数量。
        :param 'InstanceInstanceConfigurationWarmNodeResourceSpecArgs' warm_node_resource_spec: 温节点的节点规格配置详情。
        :param 'InstanceInstanceConfigurationWarmNodeStorageSpecArgs' warm_node_storage_spec: 温节点的存储规格配置详情。
        :param builtins.str zone_id: 实例所在可用区。说明如果是多可用区部署，则填写多个 ZoneId，使用英文逗号分隔，如cn-beijing-a,cn-beijing-c。最左侧的 ZoneId 为主可用区，其余为备可用区。
        :param builtins.int zone_number: 实例的可用区数量。
        """
        if admin_password is not None:
            pulumi.set(__self__, "admin_password", admin_password)
        if admin_user_name is not None:
            pulumi.set(__self__, "admin_user_name", admin_user_name)
        if auto_renew is not None:
            pulumi.set(__self__, "auto_renew", auto_renew)
        if charge_type is not None:
            pulumi.set(__self__, "charge_type", charge_type)
        if cold_node_number is not None:
            pulumi.set(__self__, "cold_node_number", cold_node_number)
        if cold_node_resource_spec is not None:
            pulumi.set(__self__, "cold_node_resource_spec", cold_node_resource_spec)
        if cold_node_storage_spec is not None:
            pulumi.set(__self__, "cold_node_storage_spec", cold_node_storage_spec)
        if configuration_code is not None:
            pulumi.set(__self__, "configuration_code", configuration_code)
        if coordinator_node_number is not None:
            pulumi.set(__self__, "coordinator_node_number", coordinator_node_number)
        if coordinator_node_resource_spec is not None:
            pulumi.set(__self__, "coordinator_node_resource_spec", coordinator_node_resource_spec)
        if coordinator_node_storage_spec is not None:
            pulumi.set(__self__, "coordinator_node_storage_spec", coordinator_node_storage_spec)
        if deletion_protection is not None:
            pulumi.set(__self__, "deletion_protection", deletion_protection)
        if enable_https is not None:
            pulumi.set(__self__, "enable_https", enable_https)
        if enable_pure_master is not None:
            pulumi.set(__self__, "enable_pure_master", enable_pure_master)
        if hot_node_number is not None:
            pulumi.set(__self__, "hot_node_number", hot_node_number)
        if hot_node_resource_spec is not None:
            pulumi.set(__self__, "hot_node_resource_spec", hot_node_resource_spec)
        if hot_node_storage_spec is not None:
            pulumi.set(__self__, "hot_node_storage_spec", hot_node_storage_spec)
        if instance_name is not None:
            pulumi.set(__self__, "instance_name", instance_name)
        if kibana_node_number is not None:
            pulumi.set(__self__, "kibana_node_number", kibana_node_number)
        if kibana_node_resource_spec is not None:
            pulumi.set(__self__, "kibana_node_resource_spec", kibana_node_resource_spec)
        if master_node_number is not None:
            pulumi.set(__self__, "master_node_number", master_node_number)
        if master_node_resource_spec is not None:
            pulumi.set(__self__, "master_node_resource_spec", master_node_resource_spec)
        if master_node_storage_spec is not None:
            pulumi.set(__self__, "master_node_storage_spec", master_node_storage_spec)
        if network_specs is not None:
            pulumi.set(__self__, "network_specs", network_specs)
        if node_specs_assigns is not None:
            pulumi.set(__self__, "node_specs_assigns", node_specs_assigns)
        if period is not None:
            pulumi.set(__self__, "period", period)
        if project_name is not None:
            pulumi.set(__self__, "project_name", project_name)
        if region_id is not None:
            pulumi.set(__self__, "region_id", region_id)
        if subnet is not None:
            pulumi.set(__self__, "subnet", subnet)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if version is not None:
            pulumi.set(__self__, "version", version)
        if vpc is not None:
            pulumi.set(__self__, "vpc", vpc)
        if warm_node_number is not None:
            pulumi.set(__self__, "warm_node_number", warm_node_number)
        if warm_node_resource_spec is not None:
            pulumi.set(__self__, "warm_node_resource_spec", warm_node_resource_spec)
        if warm_node_storage_spec is not None:
            pulumi.set(__self__, "warm_node_storage_spec", warm_node_storage_spec)
        if zone_id is not None:
            pulumi.set(__self__, "zone_id", zone_id)
        if zone_number is not None:
            pulumi.set(__self__, "zone_number", zone_number)

    @property
    @pulumi.getter(name="adminPassword")
    def admin_password(self) -> Optional[builtins.str]:
        """
        管理员密码。
        """
        return pulumi.get(self, "admin_password")

    @property
    @pulumi.getter(name="adminUserName")
    def admin_user_name(self) -> Optional[builtins.str]:
        """
        管理员用户名。
        """
        return pulumi.get(self, "admin_user_name")

    @property
    @pulumi.getter(name="autoRenew")
    def auto_renew(self) -> Optional[builtins.bool]:
        """
        包年包月实例是否配置自动续费。true：自动续费，系统会在每次到期前自动为实例续费。false：未开启自动续费，需要在实例到期前进行手动续费。如需了解更多，请参见实例续费。
        """
        return pulumi.get(self, "auto_renew")

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> Optional[builtins.str]:
        """
        实例计费类型。PostPaid：按量计费。PrePaid：包年包月。
        """
        return pulumi.get(self, "charge_type")

    @property
    @pulumi.getter(name="coldNodeNumber")
    def cold_node_number(self) -> Optional[builtins.int]:
        """
        冷节点数量。
        """
        return pulumi.get(self, "cold_node_number")

    @property
    @pulumi.getter(name="coldNodeResourceSpec")
    def cold_node_resource_spec(self) -> Optional['outputs.InstanceInstanceConfigurationColdNodeResourceSpec']:
        """
        冷节点的节点规格配置详情。
        """
        return pulumi.get(self, "cold_node_resource_spec")

    @property
    @pulumi.getter(name="coldNodeStorageSpec")
    def cold_node_storage_spec(self) -> Optional['outputs.InstanceInstanceConfigurationColdNodeStorageSpec']:
        """
        冷节点的存储规格配置详情。
        """
        return pulumi.get(self, "cold_node_storage_spec")

    @property
    @pulumi.getter(name="configurationCode")
    def configuration_code(self) -> Optional[builtins.str]:
        """
        计费配置码，可以通过调用DescribeNodeAvailableSpecs接口获得。
        """
        return pulumi.get(self, "configuration_code")

    @property
    @pulumi.getter(name="coordinatorNodeNumber")
    def coordinator_node_number(self) -> Optional[builtins.int]:
        """
        协调节点数量。
        """
        return pulumi.get(self, "coordinator_node_number")

    @property
    @pulumi.getter(name="coordinatorNodeResourceSpec")
    def coordinator_node_resource_spec(self) -> Optional['outputs.InstanceInstanceConfigurationCoordinatorNodeResourceSpec']:
        """
        协调节点的节点规格配置详情。
        """
        return pulumi.get(self, "coordinator_node_resource_spec")

    @property
    @pulumi.getter(name="coordinatorNodeStorageSpec")
    def coordinator_node_storage_spec(self) -> Optional['outputs.InstanceInstanceConfigurationCoordinatorNodeStorageSpec']:
        """
        协调节点的存储规格配置详情。
        """
        return pulumi.get(self, "coordinator_node_storage_spec")

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> Optional[builtins.bool]:
        """
        是否开启实例删除保护功能，取值说明如下：true：开启实例删除保护。false：关闭实例删除保护。说明开启实例删除保护后，您将无法通过控制台或者 API 删除实例。
        """
        return pulumi.get(self, "deletion_protection")

    @property
    @pulumi.getter(name="enableHttps")
    def enable_https(self) -> Optional[builtins.bool]:
        """
        是否启用 HTTPS 访问协议。true：启用 HTTPS 访问。false：不启用 HTTPS，使用 HTTP 访问。说明如果选择使用 HTTP 访问，将无需安全认证即可访问，并使用 HTTP 明文传输数据。您需要确保访问环境的安全性，且不要将访问接口暴露在公网环境上。实例创建完成后，支持根据业务需求修改传输协议。相关文档，请参见切换实例传输协议。
        """
        return pulumi.get(self, "enable_https")

    @property
    @pulumi.getter(name="enablePureMaster")
    def enable_pure_master(self) -> Optional[builtins.bool]:
        """
        Master 节点是否独立。true：Master 节点独立。false：Master 节点与数据节点重合，即使用 Hot 声明。
        """
        return pulumi.get(self, "enable_pure_master")

    @property
    @pulumi.getter(name="hotNodeNumber")
    def hot_node_number(self) -> Optional[builtins.int]:
        """
        数据节点数量。
        """
        return pulumi.get(self, "hot_node_number")

    @property
    @pulumi.getter(name="hotNodeResourceSpec")
    def hot_node_resource_spec(self) -> Optional['outputs.InstanceInstanceConfigurationHotNodeResourceSpec']:
        """
        数据节点的节点规格配置详情。
        """
        return pulumi.get(self, "hot_node_resource_spec")

    @property
    @pulumi.getter(name="hotNodeStorageSpec")
    def hot_node_storage_spec(self) -> Optional['outputs.InstanceInstanceConfigurationHotNodeStorageSpec']:
        """
        数据节点的存储规格配置详情。
        """
        return pulumi.get(self, "hot_node_storage_spec")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> Optional[builtins.str]:
        """
        自定义设置实例名称。只能包含中文、字母、数字、短横线（-）和下划线（_），开头和结尾不能是数字和短横线（-）。长度在 1～128 个字符内。
        """
        return pulumi.get(self, "instance_name")

    @property
    @pulumi.getter(name="kibanaNodeNumber")
    def kibana_node_number(self) -> Optional[builtins.int]:
        """
        kibana 节点数量。
        """
        return pulumi.get(self, "kibana_node_number")

    @property
    @pulumi.getter(name="kibanaNodeResourceSpec")
    def kibana_node_resource_spec(self) -> Optional['outputs.InstanceInstanceConfigurationKibanaNodeResourceSpec']:
        """
        Kibana 节点的节点规格配置详情。
        """
        return pulumi.get(self, "kibana_node_resource_spec")

    @property
    @pulumi.getter(name="masterNodeNumber")
    def master_node_number(self) -> Optional[builtins.int]:
        """
        master 节点数量。
        """
        return pulumi.get(self, "master_node_number")

    @property
    @pulumi.getter(name="masterNodeResourceSpec")
    def master_node_resource_spec(self) -> Optional['outputs.InstanceInstanceConfigurationMasterNodeResourceSpec']:
        """
        Master 节点的节点规格配置详情。
        """
        return pulumi.get(self, "master_node_resource_spec")

    @property
    @pulumi.getter(name="masterNodeStorageSpec")
    def master_node_storage_spec(self) -> Optional['outputs.InstanceInstanceConfigurationMasterNodeStorageSpec']:
        """
        Master 节点的存储规格配置详情。
        """
        return pulumi.get(self, "master_node_storage_spec")

    @property
    @pulumi.getter(name="networkSpecs")
    def network_specs(self) -> Optional[Sequence['outputs.InstanceInstanceConfigurationNetworkSpec']]:
        return pulumi.get(self, "network_specs")

    @property
    @pulumi.getter(name="nodeSpecsAssigns")
    def node_specs_assigns(self) -> Optional[Sequence['outputs.InstanceInstanceConfigurationNodeSpecsAssign']]:
        return pulumi.get(self, "node_specs_assigns")

    @property
    @pulumi.getter
    def period(self) -> Optional[builtins.int]:
        """
        包年包月实例的购买时长，单位：月。
        """
        return pulumi.get(self, "period")

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> Optional[builtins.str]:
        """
        按需设置云搜索实例所属的项目，有利于云资源的分组管理。项目是提供的一种资源管理方式，有利于维护资源独立、数据安全；同时可从项目维度查看资源消费账单，便于计算云资源使用成本。如需了解更多信息，请参见项目概述
        """
        return pulumi.get(self, "project_name")

    @property
    @pulumi.getter(name="regionId")
    def region_id(self) -> Optional[builtins.str]:
        """
        实例所在区域。
        """
        return pulumi.get(self, "region_id")

    @property
    @pulumi.getter
    def subnet(self) -> Optional['outputs.InstanceInstanceConfigurationSubnet']:
        """
        设置实例的子网信息。说明设置的子网必须是主可用区中的子网。
        """
        return pulumi.get(self, "subnet")

    @property
    @pulumi.getter
    def tags(self) -> Optional[Sequence['outputs.InstanceInstanceConfigurationTag']]:
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter
    def version(self) -> Optional[builtins.str]:
        """
        API的版本，取值：2023-01-01。
        """
        return pulumi.get(self, "version")

    @property
    @pulumi.getter
    def vpc(self) -> Optional['outputs.InstanceInstanceConfigurationVpc']:
        """
        设置实例的私有网络 VPC 信息。
        """
        return pulumi.get(self, "vpc")

    @property
    @pulumi.getter(name="warmNodeNumber")
    def warm_node_number(self) -> Optional[builtins.int]:
        """
        温节点数量。
        """
        return pulumi.get(self, "warm_node_number")

    @property
    @pulumi.getter(name="warmNodeResourceSpec")
    def warm_node_resource_spec(self) -> Optional['outputs.InstanceInstanceConfigurationWarmNodeResourceSpec']:
        """
        温节点的节点规格配置详情。
        """
        return pulumi.get(self, "warm_node_resource_spec")

    @property
    @pulumi.getter(name="warmNodeStorageSpec")
    def warm_node_storage_spec(self) -> Optional['outputs.InstanceInstanceConfigurationWarmNodeStorageSpec']:
        """
        温节点的存储规格配置详情。
        """
        return pulumi.get(self, "warm_node_storage_spec")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> Optional[builtins.str]:
        """
        实例所在可用区。说明如果是多可用区部署，则填写多个 ZoneId，使用英文逗号分隔，如cn-beijing-a,cn-beijing-c。最左侧的 ZoneId 为主可用区，其余为备可用区。
        """
        return pulumi.get(self, "zone_id")

    @property
    @pulumi.getter(name="zoneNumber")
    def zone_number(self) -> Optional[builtins.int]:
        """
        实例的可用区数量。
        """
        return pulumi.get(self, "zone_number")


@pulumi.output_type
class InstanceInstanceConfigurationColdNodeResourceSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationColdNodeResourceSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationColdNodeResourceSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationColdNodeResourceSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cpu: Optional[builtins.int] = None,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 memory: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        if cpu is not None:
            pulumi.set(__self__, "cpu", cpu)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if memory is not None:
            pulumi.set(__self__, "memory", memory)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> Optional[builtins.int]:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> Optional[builtins.int]:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class InstanceInstanceConfigurationColdNodeStorageSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"
        elif key == "maxSize":
            suggest = "max_size"
        elif key == "minSize":
            suggest = "min_size"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationColdNodeStorageSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationColdNodeStorageSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationColdNodeStorageSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 max_size: Optional[builtins.int] = None,
                 min_size: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None,
                 size: Optional[builtins.int] = None):
        """
        :param builtins.str description: 存储规格的描述信息
        :param builtins.str display_name: 存储规格的显示名称
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB
        :param builtins.int min_size: 存储规格最小值，单位为 GiB
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 当前存储规格值，单位为 GiB
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if max_size is not None:
            pulumi.set(__self__, "max_size", max_size)
        if min_size is not None:
            pulumi.set(__self__, "min_size", min_size)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if size is not None:
            pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        存储规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        存储规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> Optional[builtins.int]:
        """
        存储规格的最大值，单位为 GiB
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> Optional[builtins.int]:
        """
        存储规格最小值，单位为 GiB
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> Optional[builtins.int]:
        """
        当前存储规格值，单位为 GiB
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class InstanceInstanceConfigurationCoordinatorNodeResourceSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationCoordinatorNodeResourceSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationCoordinatorNodeResourceSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationCoordinatorNodeResourceSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cpu: Optional[builtins.int] = None,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 memory: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        if cpu is not None:
            pulumi.set(__self__, "cpu", cpu)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if memory is not None:
            pulumi.set(__self__, "memory", memory)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> Optional[builtins.int]:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> Optional[builtins.int]:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class InstanceInstanceConfigurationCoordinatorNodeStorageSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"
        elif key == "maxSize":
            suggest = "max_size"
        elif key == "minSize":
            suggest = "min_size"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationCoordinatorNodeStorageSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationCoordinatorNodeStorageSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationCoordinatorNodeStorageSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 max_size: Optional[builtins.int] = None,
                 min_size: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None,
                 size: Optional[builtins.int] = None):
        """
        :param builtins.str description: 存储规格的描述信息
        :param builtins.str display_name: 存储规格的显示名称
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB
        :param builtins.int min_size: 存储规格最小值，单位为 GiB
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 当前存储规格值，单位为 GiB
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if max_size is not None:
            pulumi.set(__self__, "max_size", max_size)
        if min_size is not None:
            pulumi.set(__self__, "min_size", min_size)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if size is not None:
            pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        存储规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        存储规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> Optional[builtins.int]:
        """
        存储规格的最大值，单位为 GiB
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> Optional[builtins.int]:
        """
        存储规格最小值，单位为 GiB
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> Optional[builtins.int]:
        """
        当前存储规格值，单位为 GiB
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class InstanceInstanceConfigurationHotNodeResourceSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationHotNodeResourceSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationHotNodeResourceSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationHotNodeResourceSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cpu: Optional[builtins.int] = None,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 memory: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）。
        :param builtins.str description: 节点规格的描述信息。
        :param builtins.str display_name: 节点规格的显示名称。
        :param builtins.int memory: 节点规格的内存容量，单位 GiB。
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情，请参见产品规格。
        """
        if cpu is not None:
            pulumi.set(__self__, "cpu", cpu)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if memory is not None:
            pulumi.set(__self__, "memory", memory)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> Optional[builtins.int]:
        """
        节点规格的 CPU 资源，单位为核（Core）。
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        节点规格的描述信息。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        节点规格的显示名称。
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> Optional[builtins.int]:
        """
        节点规格的内存容量，单位 GiB。
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        节点规格。如需了解节点规格类型和详情，请参见产品规格。
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class InstanceInstanceConfigurationHotNodeStorageSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"
        elif key == "maxSize":
            suggest = "max_size"
        elif key == "minSize":
            suggest = "min_size"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationHotNodeStorageSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationHotNodeStorageSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationHotNodeStorageSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 max_size: Optional[builtins.int] = None,
                 min_size: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None,
                 size: Optional[builtins.int] = None):
        """
        :param builtins.str description: 存储规格的描述信息。
        :param builtins.str display_name: 存储规格的显示名称。
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB。
        :param builtins.int min_size: 存储规格最小值，单位为 GiB。
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 配置的可用磁盘空间大小。
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if max_size is not None:
            pulumi.set(__self__, "max_size", max_size)
        if min_size is not None:
            pulumi.set(__self__, "min_size", min_size)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if size is not None:
            pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        存储规格的描述信息。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        存储规格的显示名称。
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> Optional[builtins.int]:
        """
        存储规格的最大值，单位为 GiB。
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> Optional[builtins.int]:
        """
        存储规格最小值，单位为 GiB。
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> Optional[builtins.int]:
        """
        配置的可用磁盘空间大小。
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class InstanceInstanceConfigurationKibanaNodeResourceSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationKibanaNodeResourceSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationKibanaNodeResourceSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationKibanaNodeResourceSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cpu: Optional[builtins.int] = None,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 memory: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        if cpu is not None:
            pulumi.set(__self__, "cpu", cpu)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if memory is not None:
            pulumi.set(__self__, "memory", memory)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> Optional[builtins.int]:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> Optional[builtins.int]:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class InstanceInstanceConfigurationMasterNodeResourceSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationMasterNodeResourceSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationMasterNodeResourceSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationMasterNodeResourceSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cpu: Optional[builtins.int] = None,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 memory: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        if cpu is not None:
            pulumi.set(__self__, "cpu", cpu)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if memory is not None:
            pulumi.set(__self__, "memory", memory)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> Optional[builtins.int]:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> Optional[builtins.int]:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class InstanceInstanceConfigurationMasterNodeStorageSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"
        elif key == "maxSize":
            suggest = "max_size"
        elif key == "minSize":
            suggest = "min_size"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationMasterNodeStorageSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationMasterNodeStorageSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationMasterNodeStorageSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 max_size: Optional[builtins.int] = None,
                 min_size: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None,
                 size: Optional[builtins.int] = None):
        """
        :param builtins.str description: 存储规格的描述信息
        :param builtins.str display_name: 存储规格的显示名称
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB
        :param builtins.int min_size: 存储规格最小值，单位为 GiB
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 当前存储规格值，单位为 GiB
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if max_size is not None:
            pulumi.set(__self__, "max_size", max_size)
        if min_size is not None:
            pulumi.set(__self__, "min_size", min_size)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if size is not None:
            pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        存储规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        存储规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> Optional[builtins.int]:
        """
        存储规格的最大值，单位为 GiB
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> Optional[builtins.int]:
        """
        存储规格最小值，单位为 GiB
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> Optional[builtins.int]:
        """
        当前存储规格值，单位为 GiB
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class InstanceInstanceConfigurationNetworkSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "isOpen":
            suggest = "is_open"
        elif key == "specName":
            suggest = "spec_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationNetworkSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationNetworkSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationNetworkSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 bandwidth: Optional[builtins.int] = None,
                 is_open: Optional[builtins.bool] = None,
                 spec_name: Optional[builtins.str] = None,
                 type: Optional[builtins.str] = None):
        """
        :param builtins.int bandwidth: 公网IP的带宽上限，默认为“1”，单位：Mbps。
        :param builtins.bool is_open: 开启/关闭
        :param builtins.str spec_name: 实例公网资源规格名称
        :param builtins.str type: 公网应用类型 Elasticsearch：es实例使用。Kibana：Dashboard使用
        """
        if bandwidth is not None:
            pulumi.set(__self__, "bandwidth", bandwidth)
        if is_open is not None:
            pulumi.set(__self__, "is_open", is_open)
        if spec_name is not None:
            pulumi.set(__self__, "spec_name", spec_name)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def bandwidth(self) -> Optional[builtins.int]:
        """
        公网IP的带宽上限，默认为“1”，单位：Mbps。
        """
        return pulumi.get(self, "bandwidth")

    @property
    @pulumi.getter(name="isOpen")
    def is_open(self) -> Optional[builtins.bool]:
        """
        开启/关闭
        """
        return pulumi.get(self, "is_open")

    @property
    @pulumi.getter(name="specName")
    def spec_name(self) -> Optional[builtins.str]:
        """
        实例公网资源规格名称
        """
        return pulumi.get(self, "spec_name")

    @property
    @pulumi.getter
    def type(self) -> Optional[builtins.str]:
        """
        公网应用类型 Elasticsearch：es实例使用。Kibana：Dashboard使用
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class InstanceInstanceConfigurationNodeSpecsAssign(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "extraPerformance":
            suggest = "extra_performance"
        elif key == "resourceSpecName":
            suggest = "resource_spec_name"
        elif key == "storageSize":
            suggest = "storage_size"
        elif key == "storageSpecName":
            suggest = "storage_spec_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationNodeSpecsAssign. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationNodeSpecsAssign.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationNodeSpecsAssign.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 extra_performance: Optional['outputs.InstanceInstanceConfigurationNodeSpecsAssignExtraPerformance'] = None,
                 number: Optional[builtins.int] = None,
                 resource_spec_name: Optional[builtins.str] = None,
                 storage_size: Optional[builtins.int] = None,
                 storage_spec_name: Optional[builtins.str] = None,
                 type: Optional[builtins.str] = None):
        """
        :param 'InstanceInstanceConfigurationNodeSpecsAssignExtraPerformanceArgs' extra_performance: 磁盘额外性能包相关配置。
        :param builtins.int number: 节点数量。配置数据节点数量时，在不同部署方式下，需要注意以下信息：单可用区部署：建议生产环境至少配置 3 个数据节点，配置 2 个节点时存在脑裂风险。如果启用专有主节点，2 个数据节点不会脑裂。双可用区部署，默认启用专有主节点：建议生产环境至少配置 4 个数据节点，即每个可用区两个数据节点。三可用区部署，默认启用专有主节点：建议生产环境至少配置 6 个数据节点，即每个可用区两个数据节点。数据节点数量可设范围为 1~100，如果有更多数据节点的需求，可申请开白提升配额到 200。配置 Master 节点：如果没有启用专有主节点，那么 Master 节点的配置和数据节点相同，否则 Master 配置是独立的。配置专有主节点，如需启用专有主节点，数量默认配置为 3。配置 Kibana 节点，数量固定为 1。配置协调节点，如需启用，生产环境建议至少 2 个协调节点，可配范围为 2~50。温数据节点：如需启用，生产环境建议至少 3 个温数据节点，最多可配置 100 个。冷数据节点：如需启用，生产环境建议至少 2 个温数据节点，最多可配置 100 个。
        :param builtins.str resource_spec_name: 计算资源规格名称。您可以通过调用DescribeNodeAvailableSpecs接口获取可用的节点规格列表。如需了解规格详情，请参见V2 实例规格
        :param builtins.int storage_size: 存储容量，单位为 GiB。默认值为 100GiB，调整步长为 10GiB。说明Kibana 节点的 StorageSize 设置为0，即"StorageSize": 0。专有主节点和协调节点的 StorageSize 默认是 20。
        :param builtins.str storage_spec_name: 存储规格名称，当前支持的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0。es.volume.essd.flexpl-standard：标准版-高性能云盘-flexpl。说明Kibana 节点的 StorageSpecName 设置为空，即"StorageSpecName": ""。
        :param builtins.str type: 节点类型。请先了解节点类型的作用，然后结合业务判断是否需要创建，详情请参见节点类型。Master：Master 节点。Hot：数据节点。Cold：冷数据节点。Warm：温数据节点。Kibana：Kibana 节点。Coordinator：协调节点。
        """
        if extra_performance is not None:
            pulumi.set(__self__, "extra_performance", extra_performance)
        if number is not None:
            pulumi.set(__self__, "number", number)
        if resource_spec_name is not None:
            pulumi.set(__self__, "resource_spec_name", resource_spec_name)
        if storage_size is not None:
            pulumi.set(__self__, "storage_size", storage_size)
        if storage_spec_name is not None:
            pulumi.set(__self__, "storage_spec_name", storage_spec_name)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="extraPerformance")
    def extra_performance(self) -> Optional['outputs.InstanceInstanceConfigurationNodeSpecsAssignExtraPerformance']:
        """
        磁盘额外性能包相关配置。
        """
        return pulumi.get(self, "extra_performance")

    @property
    @pulumi.getter
    def number(self) -> Optional[builtins.int]:
        """
        节点数量。配置数据节点数量时，在不同部署方式下，需要注意以下信息：单可用区部署：建议生产环境至少配置 3 个数据节点，配置 2 个节点时存在脑裂风险。如果启用专有主节点，2 个数据节点不会脑裂。双可用区部署，默认启用专有主节点：建议生产环境至少配置 4 个数据节点，即每个可用区两个数据节点。三可用区部署，默认启用专有主节点：建议生产环境至少配置 6 个数据节点，即每个可用区两个数据节点。数据节点数量可设范围为 1~100，如果有更多数据节点的需求，可申请开白提升配额到 200。配置 Master 节点：如果没有启用专有主节点，那么 Master 节点的配置和数据节点相同，否则 Master 配置是独立的。配置专有主节点，如需启用专有主节点，数量默认配置为 3。配置 Kibana 节点，数量固定为 1。配置协调节点，如需启用，生产环境建议至少 2 个协调节点，可配范围为 2~50。温数据节点：如需启用，生产环境建议至少 3 个温数据节点，最多可配置 100 个。冷数据节点：如需启用，生产环境建议至少 2 个温数据节点，最多可配置 100 个。
        """
        return pulumi.get(self, "number")

    @property
    @pulumi.getter(name="resourceSpecName")
    def resource_spec_name(self) -> Optional[builtins.str]:
        """
        计算资源规格名称。您可以通过调用DescribeNodeAvailableSpecs接口获取可用的节点规格列表。如需了解规格详情，请参见V2 实例规格
        """
        return pulumi.get(self, "resource_spec_name")

    @property
    @pulumi.getter(name="storageSize")
    def storage_size(self) -> Optional[builtins.int]:
        """
        存储容量，单位为 GiB。默认值为 100GiB，调整步长为 10GiB。说明Kibana 节点的 StorageSize 设置为0，即"StorageSize": 0。专有主节点和协调节点的 StorageSize 默认是 20。
        """
        return pulumi.get(self, "storage_size")

    @property
    @pulumi.getter(name="storageSpecName")
    def storage_spec_name(self) -> Optional[builtins.str]:
        """
        存储规格名称，当前支持的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0。es.volume.essd.flexpl-standard：标准版-高性能云盘-flexpl。说明Kibana 节点的 StorageSpecName 设置为空，即"StorageSpecName": ""。
        """
        return pulumi.get(self, "storage_spec_name")

    @property
    @pulumi.getter
    def type(self) -> Optional[builtins.str]:
        """
        节点类型。请先了解节点类型的作用，然后结合业务判断是否需要创建，详情请参见节点类型。Master：Master 节点。Hot：数据节点。Cold：冷数据节点。Warm：温数据节点。Kibana：Kibana 节点。Coordinator：协调节点。
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class InstanceInstanceConfigurationNodeSpecsAssignExtraPerformance(dict):
    def __init__(__self__, *,
                 throughput: Optional[builtins.int] = None):
        """
        :param builtins.int throughput: 当您的数据节点选择使用 FlexPL 存储类型，且存储规格配置为 500GiB 及以上时，支持购买带宽包增加磁盘带宽。单位为MiB，调整步长为10MiB。当前支持的存储规格及对应额外性能包吞吐量上限如下：es.volume.essd.flexpl-standard：650
        """
        if throughput is not None:
            pulumi.set(__self__, "throughput", throughput)

    @property
    @pulumi.getter
    def throughput(self) -> Optional[builtins.int]:
        """
        当您的数据节点选择使用 FlexPL 存储类型，且存储规格配置为 500GiB 及以上时，支持购买带宽包增加磁盘带宽。单位为MiB，调整步长为10MiB。当前支持的存储规格及对应额外性能包吞吐量上限如下：es.volume.essd.flexpl-standard：650
        """
        return pulumi.get(self, "throughput")


@pulumi.output_type
class InstanceInstanceConfigurationSubnet(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "subnetId":
            suggest = "subnet_id"
        elif key == "subnetName":
            suggest = "subnet_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationSubnet. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationSubnet.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationSubnet.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 subnet_id: Optional[builtins.str] = None,
                 subnet_name: Optional[builtins.str] = None):
        """
        :param builtins.str subnet_id: Subnet ID。
        :param builtins.str subnet_name: Subnet 名称。
        """
        if subnet_id is not None:
            pulumi.set(__self__, "subnet_id", subnet_id)
        if subnet_name is not None:
            pulumi.set(__self__, "subnet_name", subnet_name)

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> Optional[builtins.str]:
        """
        Subnet ID。
        """
        return pulumi.get(self, "subnet_id")

    @property
    @pulumi.getter(name="subnetName")
    def subnet_name(self) -> Optional[builtins.str]:
        """
        Subnet 名称。
        """
        return pulumi.get(self, "subnet_name")


@pulumi.output_type
class InstanceInstanceConfigurationTag(dict):
    def __init__(__self__, *,
                 key: Optional[builtins.str] = None,
                 value: Optional[builtins.str] = None):
        """
        :param builtins.str key: 用户标签的标签键。长度限制为1～128个字符。大小写敏感，不能以空格开头或结尾。允许包含字母、数字、空格（）、下划线（_）、点号（.）、半角冒号（:）、斜杠（/）、等号（=）、加号（+）、减号（-）和@。同一资源的标签键不允许重复
        :param builtins.str value: 用户标签的标签值。长度限制为0～256个字符。大小写敏感，不能以空格开头或结尾。允许包含字母、数字、空格（）、下划线（_）、点号（.）、半角冒号（:）、斜杠（/）、等号（=）、加号（+）、减号（-）和@
        """
        if key is not None:
            pulumi.set(__self__, "key", key)
        if value is not None:
            pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> Optional[builtins.str]:
        """
        用户标签的标签键。长度限制为1～128个字符。大小写敏感，不能以空格开头或结尾。允许包含字母、数字、空格（）、下划线（_）、点号（.）、半角冒号（:）、斜杠（/）、等号（=）、加号（+）、减号（-）和@。同一资源的标签键不允许重复
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> Optional[builtins.str]:
        """
        用户标签的标签值。长度限制为0～256个字符。大小写敏感，不能以空格开头或结尾。允许包含字母、数字、空格（）、下划线（_）、点号（.）、半角冒号（:）、斜杠（/）、等号（=）、加号（+）、减号（-）和@
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class InstanceInstanceConfigurationVpc(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "vpcId":
            suggest = "vpc_id"
        elif key == "vpcName":
            suggest = "vpc_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationVpc. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationVpc.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationVpc.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 vpc_id: Optional[builtins.str] = None,
                 vpc_name: Optional[builtins.str] = None):
        """
        :param builtins.str vpc_id: VPC ID。
        :param builtins.str vpc_name: VPC 名称。
        """
        if vpc_id is not None:
            pulumi.set(__self__, "vpc_id", vpc_id)
        if vpc_name is not None:
            pulumi.set(__self__, "vpc_name", vpc_name)

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> Optional[builtins.str]:
        """
        VPC ID。
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="vpcName")
    def vpc_name(self) -> Optional[builtins.str]:
        """
        VPC 名称。
        """
        return pulumi.get(self, "vpc_name")


@pulumi.output_type
class InstanceInstanceConfigurationWarmNodeResourceSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationWarmNodeResourceSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationWarmNodeResourceSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationWarmNodeResourceSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cpu: Optional[builtins.int] = None,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 memory: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        if cpu is not None:
            pulumi.set(__self__, "cpu", cpu)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if memory is not None:
            pulumi.set(__self__, "memory", memory)
        if name is not None:
            pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> Optional[builtins.int]:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> Optional[builtins.int]:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class InstanceInstanceConfigurationWarmNodeStorageSpec(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "displayName":
            suggest = "display_name"
        elif key == "maxSize":
            suggest = "max_size"
        elif key == "minSize":
            suggest = "min_size"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceInstanceConfigurationWarmNodeStorageSpec. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceInstanceConfigurationWarmNodeStorageSpec.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceInstanceConfigurationWarmNodeStorageSpec.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 description: Optional[builtins.str] = None,
                 display_name: Optional[builtins.str] = None,
                 max_size: Optional[builtins.int] = None,
                 min_size: Optional[builtins.int] = None,
                 name: Optional[builtins.str] = None,
                 size: Optional[builtins.int] = None):
        """
        :param builtins.str description: 存储规格的描述信息
        :param builtins.str display_name: 存储规格的显示名称
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB
        :param builtins.int min_size: 存储规格最小值，单位为 GiB
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 当前存储规格值，单位为 GiB
        """
        if description is not None:
            pulumi.set(__self__, "description", description)
        if display_name is not None:
            pulumi.set(__self__, "display_name", display_name)
        if max_size is not None:
            pulumi.set(__self__, "max_size", max_size)
        if min_size is not None:
            pulumi.set(__self__, "min_size", min_size)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if size is not None:
            pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> Optional[builtins.str]:
        """
        存储规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> Optional[builtins.str]:
        """
        存储规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> Optional[builtins.int]:
        """
        存储规格的最大值，单位为 GiB
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> Optional[builtins.int]:
        """
        存储规格最小值，单位为 GiB
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> Optional[builtins.str]:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> Optional[builtins.int]:
        """
        当前存储规格值，单位为 GiB
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class InstanceKibanaConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "requestTimeout":
            suggest = "request_timeout"
        elif key == "sessionKeepAlive":
            suggest = "session_keep_alive"
        elif key == "sessionTtl":
            suggest = "session_ttl"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceKibanaConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceKibanaConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceKibanaConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 request_timeout: Optional[builtins.int] = None,
                 session_keep_alive: Optional[builtins.bool] = None,
                 session_ttl: Optional[builtins.int] = None):
        """
        :param builtins.int request_timeout: 接口请求超时时长，默认为 30000 毫秒，即后端响应时长超过 30 秒时将出现503 Request timed out报错。如果需要正常获得响应、减少 503 报错，您可以选择增加请求超时时长。
        :param builtins.bool session_keep_alive: 是否主动延长会话有效期。true：默认值，表示每次页面请求都会延长会话有效期。false：不会主动延长会话有效期。此种配置下可以实现会话超时过期效果，当登录时长达到 Session 有效时长后，将会自动退出登录。
        :param builtins.int session_ttl: 会话有效时长，默认为 3600000 毫秒（1 小时）。如果您选择将 Session 活动保持设置为否，当登录时长达到 Session 有效时长后，将会自动退出登录。
        """
        if request_timeout is not None:
            pulumi.set(__self__, "request_timeout", request_timeout)
        if session_keep_alive is not None:
            pulumi.set(__self__, "session_keep_alive", session_keep_alive)
        if session_ttl is not None:
            pulumi.set(__self__, "session_ttl", session_ttl)

    @property
    @pulumi.getter(name="requestTimeout")
    def request_timeout(self) -> Optional[builtins.int]:
        """
        接口请求超时时长，默认为 30000 毫秒，即后端响应时长超过 30 秒时将出现503 Request timed out报错。如果需要正常获得响应、减少 503 报错，您可以选择增加请求超时时长。
        """
        return pulumi.get(self, "request_timeout")

    @property
    @pulumi.getter(name="sessionKeepAlive")
    def session_keep_alive(self) -> Optional[builtins.bool]:
        """
        是否主动延长会话有效期。true：默认值，表示每次页面请求都会延长会话有效期。false：不会主动延长会话有效期。此种配置下可以实现会话超时过期效果，当登录时长达到 Session 有效时长后，将会自动退出登录。
        """
        return pulumi.get(self, "session_keep_alive")

    @property
    @pulumi.getter(name="sessionTtl")
    def session_ttl(self) -> Optional[builtins.int]:
        """
        会话有效时长，默认为 3600000 毫秒（1 小时）。如果您选择将 Session 活动保持设置为否，当登录时长达到 Session 有效时长后，将会自动退出登录。
        """
        return pulumi.get(self, "session_ttl")


@pulumi.output_type
class InstanceSubInstance(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "subInstanceId":
            suggest = "sub_instance_id"
        elif key == "subInstanceStatus":
            suggest = "sub_instance_status"
        elif key == "subInstanceType":
            suggest = "sub_instance_type"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceSubInstance. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceSubInstance.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceSubInstance.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 sub_instance_id: Optional[builtins.str] = None,
                 sub_instance_status: Optional[builtins.str] = None,
                 sub_instance_type: Optional[builtins.str] = None):
        """
        :param builtins.str sub_instance_id: 企业级 SQL 分析实例 ID。
        :param builtins.str sub_instance_status: 实例状态。
        :param builtins.str sub_instance_type: 实例类型。
        """
        if sub_instance_id is not None:
            pulumi.set(__self__, "sub_instance_id", sub_instance_id)
        if sub_instance_status is not None:
            pulumi.set(__self__, "sub_instance_status", sub_instance_status)
        if sub_instance_type is not None:
            pulumi.set(__self__, "sub_instance_type", sub_instance_type)

    @property
    @pulumi.getter(name="subInstanceId")
    def sub_instance_id(self) -> Optional[builtins.str]:
        """
        企业级 SQL 分析实例 ID。
        """
        return pulumi.get(self, "sub_instance_id")

    @property
    @pulumi.getter(name="subInstanceStatus")
    def sub_instance_status(self) -> Optional[builtins.str]:
        """
        实例状态。
        """
        return pulumi.get(self, "sub_instance_status")

    @property
    @pulumi.getter(name="subInstanceType")
    def sub_instance_type(self) -> Optional[builtins.str]:
        """
        实例类型。
        """
        return pulumi.get(self, "sub_instance_type")


@pulumi.output_type
class InstanceTransferInfo(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "forbidStop":
            suggest = "forbid_stop"
        elif key == "reduceSpecConfig":
            suggest = "reduce_spec_config"
        elif key == "transferProgress":
            suggest = "transfer_progress"
        elif key == "transferStatus":
            suggest = "transfer_status"
        elif key == "transferTaskId":
            suggest = "transfer_task_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceTransferInfo. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceTransferInfo.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceTransferInfo.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 forbid_stop: Optional[builtins.bool] = None,
                 reduce_spec_config: Optional['outputs.InstanceTransferInfoReduceSpecConfig'] = None,
                 transfer_progress: Optional[builtins.float] = None,
                 transfer_status: Optional[builtins.str] = None,
                 transfer_task_id: Optional[builtins.str] = None):
        """
        :param builtins.bool forbid_stop: ForbidStop
        :param 'InstanceTransferInfoReduceSpecConfigArgs' reduce_spec_config: 资源信息。
        :param builtins.float transfer_progress: 数据迁移任务进度，百分制。
        :param builtins.str transfer_status: 数据迁移任务状态。
        :param builtins.str transfer_task_id: 数据迁移任务 ID。
        """
        if forbid_stop is not None:
            pulumi.set(__self__, "forbid_stop", forbid_stop)
        if reduce_spec_config is not None:
            pulumi.set(__self__, "reduce_spec_config", reduce_spec_config)
        if transfer_progress is not None:
            pulumi.set(__self__, "transfer_progress", transfer_progress)
        if transfer_status is not None:
            pulumi.set(__self__, "transfer_status", transfer_status)
        if transfer_task_id is not None:
            pulumi.set(__self__, "transfer_task_id", transfer_task_id)

    @property
    @pulumi.getter(name="forbidStop")
    def forbid_stop(self) -> Optional[builtins.bool]:
        """
        ForbidStop
        """
        return pulumi.get(self, "forbid_stop")

    @property
    @pulumi.getter(name="reduceSpecConfig")
    def reduce_spec_config(self) -> Optional['outputs.InstanceTransferInfoReduceSpecConfig']:
        """
        资源信息。
        """
        return pulumi.get(self, "reduce_spec_config")

    @property
    @pulumi.getter(name="transferProgress")
    def transfer_progress(self) -> Optional[builtins.float]:
        """
        数据迁移任务进度，百分制。
        """
        return pulumi.get(self, "transfer_progress")

    @property
    @pulumi.getter(name="transferStatus")
    def transfer_status(self) -> Optional[builtins.str]:
        """
        数据迁移任务状态。
        """
        return pulumi.get(self, "transfer_status")

    @property
    @pulumi.getter(name="transferTaskId")
    def transfer_task_id(self) -> Optional[builtins.str]:
        """
        数据迁移任务 ID。
        """
        return pulumi.get(self, "transfer_task_id")


@pulumi.output_type
class InstanceTransferInfoReduceSpecConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "coldNodeNum":
            suggest = "cold_node_num"
        elif key == "dataNodeNum":
            suggest = "data_node_num"
        elif key == "enablePureMaster":
            suggest = "enable_pure_master"
        elif key == "masterNodeNum":
            suggest = "master_node_num"
        elif key == "warmNodeNum":
            suggest = "warm_node_num"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in InstanceTransferInfoReduceSpecConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        InstanceTransferInfoReduceSpecConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        InstanceTransferInfoReduceSpecConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 cold_node_num: Optional[builtins.int] = None,
                 data_node_num: Optional[builtins.int] = None,
                 enable_pure_master: Optional[builtins.bool] = None,
                 master_node_num: Optional[builtins.int] = None,
                 warm_node_num: Optional[builtins.int] = None):
        """
        :param builtins.int cold_node_num: 冷节点数量。
        :param builtins.int data_node_num: 数据节点数量。
        :param builtins.bool enable_pure_master: Master 节点是否独立。true：Master 节点独立。false：Master 节点与数据节点重合，即用 Hot 来声明。
        :param builtins.int master_node_num: Master 节点数量。
        :param builtins.int warm_node_num: 温节点数量。
        """
        if cold_node_num is not None:
            pulumi.set(__self__, "cold_node_num", cold_node_num)
        if data_node_num is not None:
            pulumi.set(__self__, "data_node_num", data_node_num)
        if enable_pure_master is not None:
            pulumi.set(__self__, "enable_pure_master", enable_pure_master)
        if master_node_num is not None:
            pulumi.set(__self__, "master_node_num", master_node_num)
        if warm_node_num is not None:
            pulumi.set(__self__, "warm_node_num", warm_node_num)

    @property
    @pulumi.getter(name="coldNodeNum")
    def cold_node_num(self) -> Optional[builtins.int]:
        """
        冷节点数量。
        """
        return pulumi.get(self, "cold_node_num")

    @property
    @pulumi.getter(name="dataNodeNum")
    def data_node_num(self) -> Optional[builtins.int]:
        """
        数据节点数量。
        """
        return pulumi.get(self, "data_node_num")

    @property
    @pulumi.getter(name="enablePureMaster")
    def enable_pure_master(self) -> Optional[builtins.bool]:
        """
        Master 节点是否独立。true：Master 节点独立。false：Master 节点与数据节点重合，即用 Hot 来声明。
        """
        return pulumi.get(self, "enable_pure_master")

    @property
    @pulumi.getter(name="masterNodeNum")
    def master_node_num(self) -> Optional[builtins.int]:
        """
        Master 节点数量。
        """
        return pulumi.get(self, "master_node_num")

    @property
    @pulumi.getter(name="warmNodeNum")
    def warm_node_num(self) -> Optional[builtins.int]:
        """
        温节点数量。
        """
        return pulumi.get(self, "warm_node_num")


@pulumi.output_type
class GetInstanceInstanceConfigurationResult(dict):
    def __init__(__self__, *,
                 admin_password: builtins.str,
                 admin_user_name: builtins.str,
                 auto_renew: builtins.bool,
                 charge_type: builtins.str,
                 cold_node_number: builtins.int,
                 cold_node_resource_spec: 'outputs.GetInstanceInstanceConfigurationColdNodeResourceSpecResult',
                 cold_node_storage_spec: 'outputs.GetInstanceInstanceConfigurationColdNodeStorageSpecResult',
                 configuration_code: builtins.str,
                 coordinator_node_number: builtins.int,
                 coordinator_node_resource_spec: 'outputs.GetInstanceInstanceConfigurationCoordinatorNodeResourceSpecResult',
                 coordinator_node_storage_spec: 'outputs.GetInstanceInstanceConfigurationCoordinatorNodeStorageSpecResult',
                 deletion_protection: builtins.bool,
                 enable_https: builtins.bool,
                 enable_pure_master: builtins.bool,
                 hot_node_number: builtins.int,
                 hot_node_resource_spec: 'outputs.GetInstanceInstanceConfigurationHotNodeResourceSpecResult',
                 hot_node_storage_spec: 'outputs.GetInstanceInstanceConfigurationHotNodeStorageSpecResult',
                 instance_name: builtins.str,
                 kibana_node_number: builtins.int,
                 kibana_node_resource_spec: 'outputs.GetInstanceInstanceConfigurationKibanaNodeResourceSpecResult',
                 master_node_number: builtins.int,
                 master_node_resource_spec: 'outputs.GetInstanceInstanceConfigurationMasterNodeResourceSpecResult',
                 master_node_storage_spec: 'outputs.GetInstanceInstanceConfigurationMasterNodeStorageSpecResult',
                 network_specs: Sequence['outputs.GetInstanceInstanceConfigurationNetworkSpecResult'],
                 node_specs_assigns: Sequence['outputs.GetInstanceInstanceConfigurationNodeSpecsAssignResult'],
                 period: builtins.int,
                 project_name: builtins.str,
                 region_id: builtins.str,
                 subnet: 'outputs.GetInstanceInstanceConfigurationSubnetResult',
                 tags: Sequence['outputs.GetInstanceInstanceConfigurationTagResult'],
                 version: builtins.str,
                 vpc: 'outputs.GetInstanceInstanceConfigurationVpcResult',
                 warm_node_number: builtins.int,
                 warm_node_resource_spec: 'outputs.GetInstanceInstanceConfigurationWarmNodeResourceSpecResult',
                 warm_node_storage_spec: 'outputs.GetInstanceInstanceConfigurationWarmNodeStorageSpecResult',
                 zone_id: builtins.str,
                 zone_number: builtins.int):
        """
        :param builtins.str admin_password: 管理员密码。
        :param builtins.str admin_user_name: 管理员用户名。
        :param builtins.bool auto_renew: 包年包月实例是否配置自动续费。true：自动续费，系统会在每次到期前自动为实例续费。false：未开启自动续费，需要在实例到期前进行手动续费。如需了解更多，请参见实例续费。
        :param builtins.str charge_type: 实例计费类型。PostPaid：按量计费。PrePaid：包年包月。
        :param builtins.int cold_node_number: 冷节点数量。
        :param 'GetInstanceInstanceConfigurationColdNodeResourceSpecArgs' cold_node_resource_spec: 冷节点的节点规格配置详情。
        :param 'GetInstanceInstanceConfigurationColdNodeStorageSpecArgs' cold_node_storage_spec: 冷节点的存储规格配置详情。
        :param builtins.str configuration_code: 计费配置码，可以通过调用DescribeNodeAvailableSpecs接口获得。
        :param builtins.int coordinator_node_number: 协调节点数量。
        :param 'GetInstanceInstanceConfigurationCoordinatorNodeResourceSpecArgs' coordinator_node_resource_spec: 协调节点的节点规格配置详情。
        :param 'GetInstanceInstanceConfigurationCoordinatorNodeStorageSpecArgs' coordinator_node_storage_spec: 协调节点的存储规格配置详情。
        :param builtins.bool deletion_protection: 是否开启实例删除保护功能，取值说明如下：true：开启实例删除保护。false：关闭实例删除保护。说明开启实例删除保护后，您将无法通过控制台或者 API 删除实例。
        :param builtins.bool enable_https: 是否启用 HTTPS 访问协议。true：启用 HTTPS 访问。false：不启用 HTTPS，使用 HTTP 访问。说明如果选择使用 HTTP 访问，将无需安全认证即可访问，并使用 HTTP 明文传输数据。您需要确保访问环境的安全性，且不要将访问接口暴露在公网环境上。实例创建完成后，支持根据业务需求修改传输协议。相关文档，请参见切换实例传输协议。
        :param builtins.bool enable_pure_master: Master 节点是否独立。true：Master 节点独立。false：Master 节点与数据节点重合，即使用 Hot 声明。
        :param builtins.int hot_node_number: 数据节点数量。
        :param 'GetInstanceInstanceConfigurationHotNodeResourceSpecArgs' hot_node_resource_spec: 数据节点的节点规格配置详情。
        :param 'GetInstanceInstanceConfigurationHotNodeStorageSpecArgs' hot_node_storage_spec: 数据节点的存储规格配置详情。
        :param builtins.str instance_name: 自定义设置实例名称。只能包含中文、字母、数字、短横线（-）和下划线（_），开头和结尾不能是数字和短横线（-）。长度在 1～128 个字符内。
        :param builtins.int kibana_node_number: kibana 节点数量。
        :param 'GetInstanceInstanceConfigurationKibanaNodeResourceSpecArgs' kibana_node_resource_spec: Kibana 节点的节点规格配置详情。
        :param builtins.int master_node_number: master 节点数量。
        :param 'GetInstanceInstanceConfigurationMasterNodeResourceSpecArgs' master_node_resource_spec: Master 节点的节点规格配置详情。
        :param 'GetInstanceInstanceConfigurationMasterNodeStorageSpecArgs' master_node_storage_spec: Master 节点的存储规格配置详情。
        :param Sequence['GetInstanceInstanceConfigurationNetworkSpecArgs'] network_specs: 实例公网规格配置。
        :param Sequence['GetInstanceInstanceConfigurationNodeSpecsAssignArgs'] node_specs_assigns: 实例中各种节点的数量和规格配置。
        :param builtins.int period: 包年包月实例的购买时长，单位：月。
        :param builtins.str project_name: 按需设置云搜索实例所属的项目，有利于云资源的分组管理。项目是提供的一种资源管理方式，有利于维护资源独立、数据安全；同时可从项目维度查看资源消费账单，便于计算云资源使用成本。如需了解更多信息，请参见项目概述
        :param builtins.str region_id: 实例所在区域。
        :param 'GetInstanceInstanceConfigurationSubnetArgs' subnet: 设置实例的子网信息。说明设置的子网必须是主可用区中的子网。
        :param Sequence['GetInstanceInstanceConfigurationTagArgs'] tags: 标签信息。
        :param builtins.str version: API的版本，取值：2023-01-01。
        :param 'GetInstanceInstanceConfigurationVpcArgs' vpc: 设置实例的私有网络 VPC 信息。
        :param builtins.int warm_node_number: 温节点数量。
        :param 'GetInstanceInstanceConfigurationWarmNodeResourceSpecArgs' warm_node_resource_spec: 温节点的节点规格配置详情。
        :param 'GetInstanceInstanceConfigurationWarmNodeStorageSpecArgs' warm_node_storage_spec: 温节点的存储规格配置详情。
        :param builtins.str zone_id: 实例所在可用区。说明如果是多可用区部署，则填写多个 ZoneId，使用英文逗号分隔，如cn-beijing-a,cn-beijing-c。最左侧的 ZoneId 为主可用区，其余为备可用区。
        :param builtins.int zone_number: 实例的可用区数量。
        """
        pulumi.set(__self__, "admin_password", admin_password)
        pulumi.set(__self__, "admin_user_name", admin_user_name)
        pulumi.set(__self__, "auto_renew", auto_renew)
        pulumi.set(__self__, "charge_type", charge_type)
        pulumi.set(__self__, "cold_node_number", cold_node_number)
        pulumi.set(__self__, "cold_node_resource_spec", cold_node_resource_spec)
        pulumi.set(__self__, "cold_node_storage_spec", cold_node_storage_spec)
        pulumi.set(__self__, "configuration_code", configuration_code)
        pulumi.set(__self__, "coordinator_node_number", coordinator_node_number)
        pulumi.set(__self__, "coordinator_node_resource_spec", coordinator_node_resource_spec)
        pulumi.set(__self__, "coordinator_node_storage_spec", coordinator_node_storage_spec)
        pulumi.set(__self__, "deletion_protection", deletion_protection)
        pulumi.set(__self__, "enable_https", enable_https)
        pulumi.set(__self__, "enable_pure_master", enable_pure_master)
        pulumi.set(__self__, "hot_node_number", hot_node_number)
        pulumi.set(__self__, "hot_node_resource_spec", hot_node_resource_spec)
        pulumi.set(__self__, "hot_node_storage_spec", hot_node_storage_spec)
        pulumi.set(__self__, "instance_name", instance_name)
        pulumi.set(__self__, "kibana_node_number", kibana_node_number)
        pulumi.set(__self__, "kibana_node_resource_spec", kibana_node_resource_spec)
        pulumi.set(__self__, "master_node_number", master_node_number)
        pulumi.set(__self__, "master_node_resource_spec", master_node_resource_spec)
        pulumi.set(__self__, "master_node_storage_spec", master_node_storage_spec)
        pulumi.set(__self__, "network_specs", network_specs)
        pulumi.set(__self__, "node_specs_assigns", node_specs_assigns)
        pulumi.set(__self__, "period", period)
        pulumi.set(__self__, "project_name", project_name)
        pulumi.set(__self__, "region_id", region_id)
        pulumi.set(__self__, "subnet", subnet)
        pulumi.set(__self__, "tags", tags)
        pulumi.set(__self__, "version", version)
        pulumi.set(__self__, "vpc", vpc)
        pulumi.set(__self__, "warm_node_number", warm_node_number)
        pulumi.set(__self__, "warm_node_resource_spec", warm_node_resource_spec)
        pulumi.set(__self__, "warm_node_storage_spec", warm_node_storage_spec)
        pulumi.set(__self__, "zone_id", zone_id)
        pulumi.set(__self__, "zone_number", zone_number)

    @property
    @pulumi.getter(name="adminPassword")
    def admin_password(self) -> builtins.str:
        """
        管理员密码。
        """
        return pulumi.get(self, "admin_password")

    @property
    @pulumi.getter(name="adminUserName")
    def admin_user_name(self) -> builtins.str:
        """
        管理员用户名。
        """
        return pulumi.get(self, "admin_user_name")

    @property
    @pulumi.getter(name="autoRenew")
    def auto_renew(self) -> builtins.bool:
        """
        包年包月实例是否配置自动续费。true：自动续费，系统会在每次到期前自动为实例续费。false：未开启自动续费，需要在实例到期前进行手动续费。如需了解更多，请参见实例续费。
        """
        return pulumi.get(self, "auto_renew")

    @property
    @pulumi.getter(name="chargeType")
    def charge_type(self) -> builtins.str:
        """
        实例计费类型。PostPaid：按量计费。PrePaid：包年包月。
        """
        return pulumi.get(self, "charge_type")

    @property
    @pulumi.getter(name="coldNodeNumber")
    def cold_node_number(self) -> builtins.int:
        """
        冷节点数量。
        """
        return pulumi.get(self, "cold_node_number")

    @property
    @pulumi.getter(name="coldNodeResourceSpec")
    def cold_node_resource_spec(self) -> 'outputs.GetInstanceInstanceConfigurationColdNodeResourceSpecResult':
        """
        冷节点的节点规格配置详情。
        """
        return pulumi.get(self, "cold_node_resource_spec")

    @property
    @pulumi.getter(name="coldNodeStorageSpec")
    def cold_node_storage_spec(self) -> 'outputs.GetInstanceInstanceConfigurationColdNodeStorageSpecResult':
        """
        冷节点的存储规格配置详情。
        """
        return pulumi.get(self, "cold_node_storage_spec")

    @property
    @pulumi.getter(name="configurationCode")
    def configuration_code(self) -> builtins.str:
        """
        计费配置码，可以通过调用DescribeNodeAvailableSpecs接口获得。
        """
        return pulumi.get(self, "configuration_code")

    @property
    @pulumi.getter(name="coordinatorNodeNumber")
    def coordinator_node_number(self) -> builtins.int:
        """
        协调节点数量。
        """
        return pulumi.get(self, "coordinator_node_number")

    @property
    @pulumi.getter(name="coordinatorNodeResourceSpec")
    def coordinator_node_resource_spec(self) -> 'outputs.GetInstanceInstanceConfigurationCoordinatorNodeResourceSpecResult':
        """
        协调节点的节点规格配置详情。
        """
        return pulumi.get(self, "coordinator_node_resource_spec")

    @property
    @pulumi.getter(name="coordinatorNodeStorageSpec")
    def coordinator_node_storage_spec(self) -> 'outputs.GetInstanceInstanceConfigurationCoordinatorNodeStorageSpecResult':
        """
        协调节点的存储规格配置详情。
        """
        return pulumi.get(self, "coordinator_node_storage_spec")

    @property
    @pulumi.getter(name="deletionProtection")
    def deletion_protection(self) -> builtins.bool:
        """
        是否开启实例删除保护功能，取值说明如下：true：开启实例删除保护。false：关闭实例删除保护。说明开启实例删除保护后，您将无法通过控制台或者 API 删除实例。
        """
        return pulumi.get(self, "deletion_protection")

    @property
    @pulumi.getter(name="enableHttps")
    def enable_https(self) -> builtins.bool:
        """
        是否启用 HTTPS 访问协议。true：启用 HTTPS 访问。false：不启用 HTTPS，使用 HTTP 访问。说明如果选择使用 HTTP 访问，将无需安全认证即可访问，并使用 HTTP 明文传输数据。您需要确保访问环境的安全性，且不要将访问接口暴露在公网环境上。实例创建完成后，支持根据业务需求修改传输协议。相关文档，请参见切换实例传输协议。
        """
        return pulumi.get(self, "enable_https")

    @property
    @pulumi.getter(name="enablePureMaster")
    def enable_pure_master(self) -> builtins.bool:
        """
        Master 节点是否独立。true：Master 节点独立。false：Master 节点与数据节点重合，即使用 Hot 声明。
        """
        return pulumi.get(self, "enable_pure_master")

    @property
    @pulumi.getter(name="hotNodeNumber")
    def hot_node_number(self) -> builtins.int:
        """
        数据节点数量。
        """
        return pulumi.get(self, "hot_node_number")

    @property
    @pulumi.getter(name="hotNodeResourceSpec")
    def hot_node_resource_spec(self) -> 'outputs.GetInstanceInstanceConfigurationHotNodeResourceSpecResult':
        """
        数据节点的节点规格配置详情。
        """
        return pulumi.get(self, "hot_node_resource_spec")

    @property
    @pulumi.getter(name="hotNodeStorageSpec")
    def hot_node_storage_spec(self) -> 'outputs.GetInstanceInstanceConfigurationHotNodeStorageSpecResult':
        """
        数据节点的存储规格配置详情。
        """
        return pulumi.get(self, "hot_node_storage_spec")

    @property
    @pulumi.getter(name="instanceName")
    def instance_name(self) -> builtins.str:
        """
        自定义设置实例名称。只能包含中文、字母、数字、短横线（-）和下划线（_），开头和结尾不能是数字和短横线（-）。长度在 1～128 个字符内。
        """
        return pulumi.get(self, "instance_name")

    @property
    @pulumi.getter(name="kibanaNodeNumber")
    def kibana_node_number(self) -> builtins.int:
        """
        kibana 节点数量。
        """
        return pulumi.get(self, "kibana_node_number")

    @property
    @pulumi.getter(name="kibanaNodeResourceSpec")
    def kibana_node_resource_spec(self) -> 'outputs.GetInstanceInstanceConfigurationKibanaNodeResourceSpecResult':
        """
        Kibana 节点的节点规格配置详情。
        """
        return pulumi.get(self, "kibana_node_resource_spec")

    @property
    @pulumi.getter(name="masterNodeNumber")
    def master_node_number(self) -> builtins.int:
        """
        master 节点数量。
        """
        return pulumi.get(self, "master_node_number")

    @property
    @pulumi.getter(name="masterNodeResourceSpec")
    def master_node_resource_spec(self) -> 'outputs.GetInstanceInstanceConfigurationMasterNodeResourceSpecResult':
        """
        Master 节点的节点规格配置详情。
        """
        return pulumi.get(self, "master_node_resource_spec")

    @property
    @pulumi.getter(name="masterNodeStorageSpec")
    def master_node_storage_spec(self) -> 'outputs.GetInstanceInstanceConfigurationMasterNodeStorageSpecResult':
        """
        Master 节点的存储规格配置详情。
        """
        return pulumi.get(self, "master_node_storage_spec")

    @property
    @pulumi.getter(name="networkSpecs")
    def network_specs(self) -> Sequence['outputs.GetInstanceInstanceConfigurationNetworkSpecResult']:
        """
        实例公网规格配置。
        """
        return pulumi.get(self, "network_specs")

    @property
    @pulumi.getter(name="nodeSpecsAssigns")
    def node_specs_assigns(self) -> Sequence['outputs.GetInstanceInstanceConfigurationNodeSpecsAssignResult']:
        """
        实例中各种节点的数量和规格配置。
        """
        return pulumi.get(self, "node_specs_assigns")

    @property
    @pulumi.getter
    def period(self) -> builtins.int:
        """
        包年包月实例的购买时长，单位：月。
        """
        return pulumi.get(self, "period")

    @property
    @pulumi.getter(name="projectName")
    def project_name(self) -> builtins.str:
        """
        按需设置云搜索实例所属的项目，有利于云资源的分组管理。项目是提供的一种资源管理方式，有利于维护资源独立、数据安全；同时可从项目维度查看资源消费账单，便于计算云资源使用成本。如需了解更多信息，请参见项目概述
        """
        return pulumi.get(self, "project_name")

    @property
    @pulumi.getter(name="regionId")
    def region_id(self) -> builtins.str:
        """
        实例所在区域。
        """
        return pulumi.get(self, "region_id")

    @property
    @pulumi.getter
    def subnet(self) -> 'outputs.GetInstanceInstanceConfigurationSubnetResult':
        """
        设置实例的子网信息。说明设置的子网必须是主可用区中的子网。
        """
        return pulumi.get(self, "subnet")

    @property
    @pulumi.getter
    def tags(self) -> Sequence['outputs.GetInstanceInstanceConfigurationTagResult']:
        """
        标签信息。
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter
    def version(self) -> builtins.str:
        """
        API的版本，取值：2023-01-01。
        """
        return pulumi.get(self, "version")

    @property
    @pulumi.getter
    def vpc(self) -> 'outputs.GetInstanceInstanceConfigurationVpcResult':
        """
        设置实例的私有网络 VPC 信息。
        """
        return pulumi.get(self, "vpc")

    @property
    @pulumi.getter(name="warmNodeNumber")
    def warm_node_number(self) -> builtins.int:
        """
        温节点数量。
        """
        return pulumi.get(self, "warm_node_number")

    @property
    @pulumi.getter(name="warmNodeResourceSpec")
    def warm_node_resource_spec(self) -> 'outputs.GetInstanceInstanceConfigurationWarmNodeResourceSpecResult':
        """
        温节点的节点规格配置详情。
        """
        return pulumi.get(self, "warm_node_resource_spec")

    @property
    @pulumi.getter(name="warmNodeStorageSpec")
    def warm_node_storage_spec(self) -> 'outputs.GetInstanceInstanceConfigurationWarmNodeStorageSpecResult':
        """
        温节点的存储规格配置详情。
        """
        return pulumi.get(self, "warm_node_storage_spec")

    @property
    @pulumi.getter(name="zoneId")
    def zone_id(self) -> builtins.str:
        """
        实例所在可用区。说明如果是多可用区部署，则填写多个 ZoneId，使用英文逗号分隔，如cn-beijing-a,cn-beijing-c。最左侧的 ZoneId 为主可用区，其余为备可用区。
        """
        return pulumi.get(self, "zone_id")

    @property
    @pulumi.getter(name="zoneNumber")
    def zone_number(self) -> builtins.int:
        """
        实例的可用区数量。
        """
        return pulumi.get(self, "zone_number")


@pulumi.output_type
class GetInstanceInstanceConfigurationColdNodeResourceSpecResult(dict):
    def __init__(__self__, *,
                 cpu: builtins.int,
                 description: builtins.str,
                 display_name: builtins.str,
                 memory: builtins.int,
                 name: builtins.str):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        pulumi.set(__self__, "cpu", cpu)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "memory", memory)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> builtins.int:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> builtins.int:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetInstanceInstanceConfigurationColdNodeStorageSpecResult(dict):
    def __init__(__self__, *,
                 description: builtins.str,
                 display_name: builtins.str,
                 max_size: builtins.int,
                 min_size: builtins.int,
                 name: builtins.str,
                 size: builtins.int):
        """
        :param builtins.str description: 存储规格的描述信息
        :param builtins.str display_name: 存储规格的显示名称
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB
        :param builtins.int min_size: 存储规格最小值，单位为 GiB
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 当前存储规格值，单位为 GiB
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "max_size", max_size)
        pulumi.set(__self__, "min_size", min_size)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        存储规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        存储规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> builtins.int:
        """
        存储规格的最大值，单位为 GiB
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> builtins.int:
        """
        存储规格最小值，单位为 GiB
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> builtins.int:
        """
        当前存储规格值，单位为 GiB
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class GetInstanceInstanceConfigurationCoordinatorNodeResourceSpecResult(dict):
    def __init__(__self__, *,
                 cpu: builtins.int,
                 description: builtins.str,
                 display_name: builtins.str,
                 memory: builtins.int,
                 name: builtins.str):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        pulumi.set(__self__, "cpu", cpu)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "memory", memory)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> builtins.int:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> builtins.int:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetInstanceInstanceConfigurationCoordinatorNodeStorageSpecResult(dict):
    def __init__(__self__, *,
                 description: builtins.str,
                 display_name: builtins.str,
                 max_size: builtins.int,
                 min_size: builtins.int,
                 name: builtins.str,
                 size: builtins.int):
        """
        :param builtins.str description: 存储规格的描述信息
        :param builtins.str display_name: 存储规格的显示名称
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB
        :param builtins.int min_size: 存储规格最小值，单位为 GiB
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 当前存储规格值，单位为 GiB
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "max_size", max_size)
        pulumi.set(__self__, "min_size", min_size)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        存储规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        存储规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> builtins.int:
        """
        存储规格的最大值，单位为 GiB
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> builtins.int:
        """
        存储规格最小值，单位为 GiB
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> builtins.int:
        """
        当前存储规格值，单位为 GiB
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class GetInstanceInstanceConfigurationHotNodeResourceSpecResult(dict):
    def __init__(__self__, *,
                 cpu: builtins.int,
                 description: builtins.str,
                 display_name: builtins.str,
                 memory: builtins.int,
                 name: builtins.str):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）。
        :param builtins.str description: 节点规格的描述信息。
        :param builtins.str display_name: 节点规格的显示名称。
        :param builtins.int memory: 节点规格的内存容量，单位 GiB。
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情，请参见产品规格。
        """
        pulumi.set(__self__, "cpu", cpu)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "memory", memory)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> builtins.int:
        """
        节点规格的 CPU 资源，单位为核（Core）。
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        节点规格的描述信息。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        节点规格的显示名称。
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> builtins.int:
        """
        节点规格的内存容量，单位 GiB。
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        节点规格。如需了解节点规格类型和详情，请参见产品规格。
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetInstanceInstanceConfigurationHotNodeStorageSpecResult(dict):
    def __init__(__self__, *,
                 description: builtins.str,
                 display_name: builtins.str,
                 max_size: builtins.int,
                 min_size: builtins.int,
                 name: builtins.str,
                 size: builtins.int):
        """
        :param builtins.str description: 存储规格的描述信息。
        :param builtins.str display_name: 存储规格的显示名称。
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB。
        :param builtins.int min_size: 存储规格最小值，单位为 GiB。
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 配置的可用磁盘空间大小。
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "max_size", max_size)
        pulumi.set(__self__, "min_size", min_size)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        存储规格的描述信息。
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        存储规格的显示名称。
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> builtins.int:
        """
        存储规格的最大值，单位为 GiB。
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> builtins.int:
        """
        存储规格最小值，单位为 GiB。
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> builtins.int:
        """
        配置的可用磁盘空间大小。
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class GetInstanceInstanceConfigurationKibanaNodeResourceSpecResult(dict):
    def __init__(__self__, *,
                 cpu: builtins.int,
                 description: builtins.str,
                 display_name: builtins.str,
                 memory: builtins.int,
                 name: builtins.str):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        pulumi.set(__self__, "cpu", cpu)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "memory", memory)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> builtins.int:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> builtins.int:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetInstanceInstanceConfigurationMasterNodeResourceSpecResult(dict):
    def __init__(__self__, *,
                 cpu: builtins.int,
                 description: builtins.str,
                 display_name: builtins.str,
                 memory: builtins.int,
                 name: builtins.str):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        pulumi.set(__self__, "cpu", cpu)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "memory", memory)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> builtins.int:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> builtins.int:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetInstanceInstanceConfigurationMasterNodeStorageSpecResult(dict):
    def __init__(__self__, *,
                 description: builtins.str,
                 display_name: builtins.str,
                 max_size: builtins.int,
                 min_size: builtins.int,
                 name: builtins.str,
                 size: builtins.int):
        """
        :param builtins.str description: 存储规格的描述信息
        :param builtins.str display_name: 存储规格的显示名称
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB
        :param builtins.int min_size: 存储规格最小值，单位为 GiB
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 当前存储规格值，单位为 GiB
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "max_size", max_size)
        pulumi.set(__self__, "min_size", min_size)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        存储规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        存储规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> builtins.int:
        """
        存储规格的最大值，单位为 GiB
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> builtins.int:
        """
        存储规格最小值，单位为 GiB
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> builtins.int:
        """
        当前存储规格值，单位为 GiB
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class GetInstanceInstanceConfigurationNetworkSpecResult(dict):
    def __init__(__self__, *,
                 bandwidth: builtins.int,
                 is_open: builtins.bool,
                 spec_name: builtins.str,
                 type: builtins.str):
        """
        :param builtins.int bandwidth: 公网IP的带宽上限，默认为“1”，单位：Mbps。
        :param builtins.bool is_open: 开启/关闭
        :param builtins.str spec_name: 实例公网资源规格名称
        :param builtins.str type: 公网应用类型 Elasticsearch：es实例使用。Kibana：Dashboard使用
        """
        pulumi.set(__self__, "bandwidth", bandwidth)
        pulumi.set(__self__, "is_open", is_open)
        pulumi.set(__self__, "spec_name", spec_name)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def bandwidth(self) -> builtins.int:
        """
        公网IP的带宽上限，默认为“1”，单位：Mbps。
        """
        return pulumi.get(self, "bandwidth")

    @property
    @pulumi.getter(name="isOpen")
    def is_open(self) -> builtins.bool:
        """
        开启/关闭
        """
        return pulumi.get(self, "is_open")

    @property
    @pulumi.getter(name="specName")
    def spec_name(self) -> builtins.str:
        """
        实例公网资源规格名称
        """
        return pulumi.get(self, "spec_name")

    @property
    @pulumi.getter
    def type(self) -> builtins.str:
        """
        公网应用类型 Elasticsearch：es实例使用。Kibana：Dashboard使用
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetInstanceInstanceConfigurationNodeSpecsAssignResult(dict):
    def __init__(__self__, *,
                 extra_performance: 'outputs.GetInstanceInstanceConfigurationNodeSpecsAssignExtraPerformanceResult',
                 number: builtins.int,
                 resource_spec_name: builtins.str,
                 storage_size: builtins.int,
                 storage_spec_name: builtins.str,
                 type: builtins.str):
        """
        :param 'GetInstanceInstanceConfigurationNodeSpecsAssignExtraPerformanceArgs' extra_performance: 磁盘额外性能包相关配置。
        :param builtins.int number: 节点数量。配置数据节点数量时，在不同部署方式下，需要注意以下信息：单可用区部署：建议生产环境至少配置 3 个数据节点，配置 2 个节点时存在脑裂风险。如果启用专有主节点，2 个数据节点不会脑裂。双可用区部署，默认启用专有主节点：建议生产环境至少配置 4 个数据节点，即每个可用区两个数据节点。三可用区部署，默认启用专有主节点：建议生产环境至少配置 6 个数据节点，即每个可用区两个数据节点。数据节点数量可设范围为 1~100，如果有更多数据节点的需求，可申请开白提升配额到 200。配置 Master 节点：如果没有启用专有主节点，那么 Master 节点的配置和数据节点相同，否则 Master 配置是独立的。配置专有主节点，如需启用专有主节点，数量默认配置为 3。配置 Kibana 节点，数量固定为 1。配置协调节点，如需启用，生产环境建议至少 2 个协调节点，可配范围为 2~50。温数据节点：如需启用，生产环境建议至少 3 个温数据节点，最多可配置 100 个。冷数据节点：如需启用，生产环境建议至少 2 个温数据节点，最多可配置 100 个。
        :param builtins.str resource_spec_name: 计算资源规格名称。您可以通过调用DescribeNodeAvailableSpecs接口获取可用的节点规格列表。如需了解规格详情，请参见V2 实例规格
        :param builtins.int storage_size: 存储容量，单位为 GiB。默认值为 100GiB，调整步长为 10GiB。说明Kibana 节点的 StorageSize 设置为0，即"StorageSize": 0。专有主节点和协调节点的 StorageSize 默认是 20。
        :param builtins.str storage_spec_name: 存储规格名称，当前支持的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0。es.volume.essd.flexpl-standard：标准版-高性能云盘-flexpl。说明Kibana 节点的 StorageSpecName 设置为空，即"StorageSpecName": ""。
        :param builtins.str type: 节点类型。请先了解节点类型的作用，然后结合业务判断是否需要创建，详情请参见节点类型。Master：Master 节点。Hot：数据节点。Cold：冷数据节点。Warm：温数据节点。Kibana：Kibana 节点。Coordinator：协调节点。
        """
        pulumi.set(__self__, "extra_performance", extra_performance)
        pulumi.set(__self__, "number", number)
        pulumi.set(__self__, "resource_spec_name", resource_spec_name)
        pulumi.set(__self__, "storage_size", storage_size)
        pulumi.set(__self__, "storage_spec_name", storage_spec_name)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter(name="extraPerformance")
    def extra_performance(self) -> 'outputs.GetInstanceInstanceConfigurationNodeSpecsAssignExtraPerformanceResult':
        """
        磁盘额外性能包相关配置。
        """
        return pulumi.get(self, "extra_performance")

    @property
    @pulumi.getter
    def number(self) -> builtins.int:
        """
        节点数量。配置数据节点数量时，在不同部署方式下，需要注意以下信息：单可用区部署：建议生产环境至少配置 3 个数据节点，配置 2 个节点时存在脑裂风险。如果启用专有主节点，2 个数据节点不会脑裂。双可用区部署，默认启用专有主节点：建议生产环境至少配置 4 个数据节点，即每个可用区两个数据节点。三可用区部署，默认启用专有主节点：建议生产环境至少配置 6 个数据节点，即每个可用区两个数据节点。数据节点数量可设范围为 1~100，如果有更多数据节点的需求，可申请开白提升配额到 200。配置 Master 节点：如果没有启用专有主节点，那么 Master 节点的配置和数据节点相同，否则 Master 配置是独立的。配置专有主节点，如需启用专有主节点，数量默认配置为 3。配置 Kibana 节点，数量固定为 1。配置协调节点，如需启用，生产环境建议至少 2 个协调节点，可配范围为 2~50。温数据节点：如需启用，生产环境建议至少 3 个温数据节点，最多可配置 100 个。冷数据节点：如需启用，生产环境建议至少 2 个温数据节点，最多可配置 100 个。
        """
        return pulumi.get(self, "number")

    @property
    @pulumi.getter(name="resourceSpecName")
    def resource_spec_name(self) -> builtins.str:
        """
        计算资源规格名称。您可以通过调用DescribeNodeAvailableSpecs接口获取可用的节点规格列表。如需了解规格详情，请参见V2 实例规格
        """
        return pulumi.get(self, "resource_spec_name")

    @property
    @pulumi.getter(name="storageSize")
    def storage_size(self) -> builtins.int:
        """
        存储容量，单位为 GiB。默认值为 100GiB，调整步长为 10GiB。说明Kibana 节点的 StorageSize 设置为0，即"StorageSize": 0。专有主节点和协调节点的 StorageSize 默认是 20。
        """
        return pulumi.get(self, "storage_size")

    @property
    @pulumi.getter(name="storageSpecName")
    def storage_spec_name(self) -> builtins.str:
        """
        存储规格名称，当前支持的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0。es.volume.essd.flexpl-standard：标准版-高性能云盘-flexpl。说明Kibana 节点的 StorageSpecName 设置为空，即"StorageSpecName": ""。
        """
        return pulumi.get(self, "storage_spec_name")

    @property
    @pulumi.getter
    def type(self) -> builtins.str:
        """
        节点类型。请先了解节点类型的作用，然后结合业务判断是否需要创建，详情请参见节点类型。Master：Master 节点。Hot：数据节点。Cold：冷数据节点。Warm：温数据节点。Kibana：Kibana 节点。Coordinator：协调节点。
        """
        return pulumi.get(self, "type")


@pulumi.output_type
class GetInstanceInstanceConfigurationNodeSpecsAssignExtraPerformanceResult(dict):
    def __init__(__self__, *,
                 throughput: builtins.int):
        """
        :param builtins.int throughput: 当您的数据节点选择使用 FlexPL 存储类型，且存储规格配置为 500GiB 及以上时，支持购买带宽包增加磁盘带宽。单位为MiB，调整步长为10MiB。当前支持的存储规格及对应额外性能包吞吐量上限如下：es.volume.essd.flexpl-standard：650
        """
        pulumi.set(__self__, "throughput", throughput)

    @property
    @pulumi.getter
    def throughput(self) -> builtins.int:
        """
        当您的数据节点选择使用 FlexPL 存储类型，且存储规格配置为 500GiB 及以上时，支持购买带宽包增加磁盘带宽。单位为MiB，调整步长为10MiB。当前支持的存储规格及对应额外性能包吞吐量上限如下：es.volume.essd.flexpl-standard：650
        """
        return pulumi.get(self, "throughput")


@pulumi.output_type
class GetInstanceInstanceConfigurationSubnetResult(dict):
    def __init__(__self__, *,
                 subnet_id: builtins.str,
                 subnet_name: builtins.str):
        """
        :param builtins.str subnet_id: Subnet ID。
        :param builtins.str subnet_name: Subnet 名称。
        """
        pulumi.set(__self__, "subnet_id", subnet_id)
        pulumi.set(__self__, "subnet_name", subnet_name)

    @property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> builtins.str:
        """
        Subnet ID。
        """
        return pulumi.get(self, "subnet_id")

    @property
    @pulumi.getter(name="subnetName")
    def subnet_name(self) -> builtins.str:
        """
        Subnet 名称。
        """
        return pulumi.get(self, "subnet_name")


@pulumi.output_type
class GetInstanceInstanceConfigurationTagResult(dict):
    def __init__(__self__, *,
                 key: builtins.str,
                 value: builtins.str):
        """
        :param builtins.str key: 用户标签的标签键。长度限制为1～128个字符。大小写敏感，不能以空格开头或结尾。允许包含字母、数字、空格（）、下划线（_）、点号（.）、半角冒号（:）、斜杠（/）、等号（=）、加号（+）、减号（-）和@。同一资源的标签键不允许重复
        :param builtins.str value: 用户标签的标签值。长度限制为0～256个字符。大小写敏感，不能以空格开头或结尾。允许包含字母、数字、空格（）、下划线（_）、点号（.）、半角冒号（:）、斜杠（/）、等号（=）、加号（+）、减号（-）和@
        """
        pulumi.set(__self__, "key", key)
        pulumi.set(__self__, "value", value)

    @property
    @pulumi.getter
    def key(self) -> builtins.str:
        """
        用户标签的标签键。长度限制为1～128个字符。大小写敏感，不能以空格开头或结尾。允许包含字母、数字、空格（）、下划线（_）、点号（.）、半角冒号（:）、斜杠（/）、等号（=）、加号（+）、减号（-）和@。同一资源的标签键不允许重复
        """
        return pulumi.get(self, "key")

    @property
    @pulumi.getter
    def value(self) -> builtins.str:
        """
        用户标签的标签值。长度限制为0～256个字符。大小写敏感，不能以空格开头或结尾。允许包含字母、数字、空格（）、下划线（_）、点号（.）、半角冒号（:）、斜杠（/）、等号（=）、加号（+）、减号（-）和@
        """
        return pulumi.get(self, "value")


@pulumi.output_type
class GetInstanceInstanceConfigurationVpcResult(dict):
    def __init__(__self__, *,
                 vpc_id: builtins.str,
                 vpc_name: builtins.str):
        """
        :param builtins.str vpc_id: VPC ID。
        :param builtins.str vpc_name: VPC 名称。
        """
        pulumi.set(__self__, "vpc_id", vpc_id)
        pulumi.set(__self__, "vpc_name", vpc_name)

    @property
    @pulumi.getter(name="vpcId")
    def vpc_id(self) -> builtins.str:
        """
        VPC ID。
        """
        return pulumi.get(self, "vpc_id")

    @property
    @pulumi.getter(name="vpcName")
    def vpc_name(self) -> builtins.str:
        """
        VPC 名称。
        """
        return pulumi.get(self, "vpc_name")


@pulumi.output_type
class GetInstanceInstanceConfigurationWarmNodeResourceSpecResult(dict):
    def __init__(__self__, *,
                 cpu: builtins.int,
                 description: builtins.str,
                 display_name: builtins.str,
                 memory: builtins.int,
                 name: builtins.str):
        """
        :param builtins.int cpu: 节点规格的 CPU 资源，单位为核（Core）
        :param builtins.str description: 节点规格的描述信息
        :param builtins.str display_name: 节点规格的显示名称
        :param builtins.int memory: 节点规格的内存容量，单位 GiB
        :param builtins.str name: 节点规格。如需了解节点规格类型和详情
        """
        pulumi.set(__self__, "cpu", cpu)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "memory", memory)
        pulumi.set(__self__, "name", name)

    @property
    @pulumi.getter
    def cpu(self) -> builtins.int:
        """
        节点规格的 CPU 资源，单位为核（Core）
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        节点规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        节点规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter
    def memory(self) -> builtins.int:
        """
        节点规格的内存容量，单位 GiB
        """
        return pulumi.get(self, "memory")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        节点规格。如需了解节点规格类型和详情
        """
        return pulumi.get(self, "name")


@pulumi.output_type
class GetInstanceInstanceConfigurationWarmNodeStorageSpecResult(dict):
    def __init__(__self__, *,
                 description: builtins.str,
                 display_name: builtins.str,
                 max_size: builtins.int,
                 min_size: builtins.int,
                 name: builtins.str,
                 size: builtins.int):
        """
        :param builtins.str description: 存储规格的描述信息
        :param builtins.str display_name: 存储规格的显示名称
        :param builtins.int max_size: 存储规格的最大值，单位为 GiB
        :param builtins.int min_size: 存储规格最小值，单位为 GiB
        :param builtins.str name: 存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        :param builtins.int size: 当前存储规格值，单位为 GiB
        """
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "display_name", display_name)
        pulumi.set(__self__, "max_size", max_size)
        pulumi.set(__self__, "min_size", min_size)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "size", size)

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        存储规格的描述信息
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> builtins.str:
        """
        存储规格的显示名称
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> builtins.int:
        """
        存储规格的最大值，单位为 GiB
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> builtins.int:
        """
        存储规格最小值，单位为 GiB
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        存储规格，当前的规格如下：es.volume.essd.pl0：标准版-高性能云盘-pl0
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def size(self) -> builtins.int:
        """
        当前存储规格值，单位为 GiB
        """
        return pulumi.get(self, "size")


@pulumi.output_type
class GetInstanceKibanaConfigResult(dict):
    def __init__(__self__, *,
                 request_timeout: builtins.int,
                 session_keep_alive: builtins.bool,
                 session_ttl: builtins.int):
        """
        :param builtins.int request_timeout: 接口请求超时时长，默认为 30000 毫秒，即后端响应时长超过 30 秒时将出现503 Request timed out报错。如果需要正常获得响应、减少 503 报错，您可以选择增加请求超时时长。
        :param builtins.bool session_keep_alive: 是否主动延长会话有效期。true：默认值，表示每次页面请求都会延长会话有效期。false：不会主动延长会话有效期。此种配置下可以实现会话超时过期效果，当登录时长达到 Session 有效时长后，将会自动退出登录。
        :param builtins.int session_ttl: 会话有效时长，默认为 3600000 毫秒（1 小时）。如果您选择将 Session 活动保持设置为否，当登录时长达到 Session 有效时长后，将会自动退出登录。
        """
        pulumi.set(__self__, "request_timeout", request_timeout)
        pulumi.set(__self__, "session_keep_alive", session_keep_alive)
        pulumi.set(__self__, "session_ttl", session_ttl)

    @property
    @pulumi.getter(name="requestTimeout")
    def request_timeout(self) -> builtins.int:
        """
        接口请求超时时长，默认为 30000 毫秒，即后端响应时长超过 30 秒时将出现503 Request timed out报错。如果需要正常获得响应、减少 503 报错，您可以选择增加请求超时时长。
        """
        return pulumi.get(self, "request_timeout")

    @property
    @pulumi.getter(name="sessionKeepAlive")
    def session_keep_alive(self) -> builtins.bool:
        """
        是否主动延长会话有效期。true：默认值，表示每次页面请求都会延长会话有效期。false：不会主动延长会话有效期。此种配置下可以实现会话超时过期效果，当登录时长达到 Session 有效时长后，将会自动退出登录。
        """
        return pulumi.get(self, "session_keep_alive")

    @property
    @pulumi.getter(name="sessionTtl")
    def session_ttl(self) -> builtins.int:
        """
        会话有效时长，默认为 3600000 毫秒（1 小时）。如果您选择将 Session 活动保持设置为否，当登录时长达到 Session 有效时长后，将会自动退出登录。
        """
        return pulumi.get(self, "session_ttl")


@pulumi.output_type
class GetInstanceSubInstanceResult(dict):
    def __init__(__self__, *,
                 sub_instance_id: builtins.str,
                 sub_instance_status: builtins.str,
                 sub_instance_type: builtins.str):
        """
        :param builtins.str sub_instance_id: 企业级 SQL 分析实例 ID。
        :param builtins.str sub_instance_status: 实例状态。
        :param builtins.str sub_instance_type: 实例类型。
        """
        pulumi.set(__self__, "sub_instance_id", sub_instance_id)
        pulumi.set(__self__, "sub_instance_status", sub_instance_status)
        pulumi.set(__self__, "sub_instance_type", sub_instance_type)

    @property
    @pulumi.getter(name="subInstanceId")
    def sub_instance_id(self) -> builtins.str:
        """
        企业级 SQL 分析实例 ID。
        """
        return pulumi.get(self, "sub_instance_id")

    @property
    @pulumi.getter(name="subInstanceStatus")
    def sub_instance_status(self) -> builtins.str:
        """
        实例状态。
        """
        return pulumi.get(self, "sub_instance_status")

    @property
    @pulumi.getter(name="subInstanceType")
    def sub_instance_type(self) -> builtins.str:
        """
        实例类型。
        """
        return pulumi.get(self, "sub_instance_type")


@pulumi.output_type
class GetInstanceTransferInfoResult(dict):
    def __init__(__self__, *,
                 forbid_stop: builtins.bool,
                 reduce_spec_config: 'outputs.GetInstanceTransferInfoReduceSpecConfigResult',
                 transfer_progress: builtins.float,
                 transfer_status: builtins.str,
                 transfer_task_id: builtins.str):
        """
        :param builtins.bool forbid_stop: ForbidStop
        :param 'GetInstanceTransferInfoReduceSpecConfigArgs' reduce_spec_config: 资源信息。
        :param builtins.float transfer_progress: 数据迁移任务进度，百分制。
        :param builtins.str transfer_status: 数据迁移任务状态。
        :param builtins.str transfer_task_id: 数据迁移任务 ID。
        """
        pulumi.set(__self__, "forbid_stop", forbid_stop)
        pulumi.set(__self__, "reduce_spec_config", reduce_spec_config)
        pulumi.set(__self__, "transfer_progress", transfer_progress)
        pulumi.set(__self__, "transfer_status", transfer_status)
        pulumi.set(__self__, "transfer_task_id", transfer_task_id)

    @property
    @pulumi.getter(name="forbidStop")
    def forbid_stop(self) -> builtins.bool:
        """
        ForbidStop
        """
        return pulumi.get(self, "forbid_stop")

    @property
    @pulumi.getter(name="reduceSpecConfig")
    def reduce_spec_config(self) -> 'outputs.GetInstanceTransferInfoReduceSpecConfigResult':
        """
        资源信息。
        """
        return pulumi.get(self, "reduce_spec_config")

    @property
    @pulumi.getter(name="transferProgress")
    def transfer_progress(self) -> builtins.float:
        """
        数据迁移任务进度，百分制。
        """
        return pulumi.get(self, "transfer_progress")

    @property
    @pulumi.getter(name="transferStatus")
    def transfer_status(self) -> builtins.str:
        """
        数据迁移任务状态。
        """
        return pulumi.get(self, "transfer_status")

    @property
    @pulumi.getter(name="transferTaskId")
    def transfer_task_id(self) -> builtins.str:
        """
        数据迁移任务 ID。
        """
        return pulumi.get(self, "transfer_task_id")


@pulumi.output_type
class GetInstanceTransferInfoReduceSpecConfigResult(dict):
    def __init__(__self__, *,
                 cold_node_num: builtins.int,
                 data_node_num: builtins.int,
                 enable_pure_master: builtins.bool,
                 master_node_num: builtins.int,
                 warm_node_num: builtins.int):
        """
        :param builtins.int cold_node_num: 冷节点数量。
        :param builtins.int data_node_num: 数据节点数量。
        :param builtins.bool enable_pure_master: Master 节点是否独立。true：Master 节点独立。false：Master 节点与数据节点重合，即用 Hot 来声明。
        :param builtins.int master_node_num: Master 节点数量。
        :param builtins.int warm_node_num: 温节点数量。
        """
        pulumi.set(__self__, "cold_node_num", cold_node_num)
        pulumi.set(__self__, "data_node_num", data_node_num)
        pulumi.set(__self__, "enable_pure_master", enable_pure_master)
        pulumi.set(__self__, "master_node_num", master_node_num)
        pulumi.set(__self__, "warm_node_num", warm_node_num)

    @property
    @pulumi.getter(name="coldNodeNum")
    def cold_node_num(self) -> builtins.int:
        """
        冷节点数量。
        """
        return pulumi.get(self, "cold_node_num")

    @property
    @pulumi.getter(name="dataNodeNum")
    def data_node_num(self) -> builtins.int:
        """
        数据节点数量。
        """
        return pulumi.get(self, "data_node_num")

    @property
    @pulumi.getter(name="enablePureMaster")
    def enable_pure_master(self) -> builtins.bool:
        """
        Master 节点是否独立。true：Master 节点独立。false：Master 节点与数据节点重合，即用 Hot 来声明。
        """
        return pulumi.get(self, "enable_pure_master")

    @property
    @pulumi.getter(name="masterNodeNum")
    def master_node_num(self) -> builtins.int:
        """
        Master 节点数量。
        """
        return pulumi.get(self, "master_node_num")

    @property
    @pulumi.getter(name="warmNodeNum")
    def warm_node_num(self) -> builtins.int:
        """
        温节点数量。
        """
        return pulumi.get(self, "warm_node_num")


