本文为您介绍阿里云Elasticsearch Serverless检索增强型应用(8.17版)支持的集群配置及索引配置。
集群配置
集群配置用于定义和控制整个Elasticsearch集群的行为,决定了集群的节点管理、数据分片、网络通信、资源分配、安全策略等核心功能,从而确保集群的稳定性、性能、安全性和可扩展性。检索增强型应用(8.17版)支持修改的集群配置如下。
阿里云Elasticsearch Serverless以应用形式管理资源,并无集群概念,但您可使用原生Elasticsearch的如下集群级别配置,调整Elasticsearch Serverless的应用参数。此处为了与原生Elasticsearch保持一致,命名为集群配置。更多集群级别相关的配置,可通过GET/_cluster/settings/include_defaults API查看。
配置项 | 描述 |
用于控制在执行高危操作时,是否需要指定操作的索引名称,防止误操作删除多个索引或大量数据。取值如下: 说明 高危操作包括删除索引、关闭集群、清除缓存等可能会导致数据丢失或集群不可用的操作。
| |
apack.tenant.index_settings.throw_unsupported_setting | 用于控制在创建索引或更新索引配置时,若使用了不支持的配置参数,是否报错。取值如下:
|
用于控制是否支持自动创建索引。取值如下:
|
索引配置
背景信息
在Elasticsearch中,您可将结构相似的文档组织到同一个索引中,便于快速查询和搜索指定内容。索引的Mapping及Settings则是定义索引行为和结构的核心操作,它们共同决定了数据如何被存储、查询和管理。
Mapping:定义索引中文档的结构,即字段的数据类型(例如,
text
、integer
、date
等)和行为(例如,是否分词、是否存储原始值、是否支持排序或聚合等)。Settings:定义索引级别的全局行为和相关约束,控制索引的存储、性能、可用性以及与数据相关的高级规则。相关配置将直接影响数据如何分布、搜索如何执行,以及资源如何分配。
您可参考本文,了解检索增强型应用(8.17版)支持的字段数据类型及索引配置。
更多索引的创建及配置,请参见Update index settings API、Update index settings API。
支持的字段数据类型
字段数据类型(Field Data Types)决定了数据在Elasticsearch的存储和查询方式。检索增强型应用(8.17版)支持的字段数据类型如下。
类别 | 字段数据类型 | 描述 |
数值类型 | 8位有符号整数,取值为 | |
16位有符号整数,取值为 | ||
32位有符号整数,取值为 | ||
64位有符号整数,取值为 | ||
16位浮点数,精度较低。用于存储较小的浮点值,节省存储空间。 | ||
32位浮点数,单精度。用于存储较高精度的浮点值。例如,温度、价格。 | ||
64位浮点数,双精度。用于存储高精度数据。例如,科学计算、金融计算。 | ||
进行压缩存储的浮点值,较节省存储空间。 | ||
64位无符号整数,取值为 | ||
范围类型 | 存储整数范围,包含起始值和结束值,用于整数区间查询。例如,年龄区间。 | |
存储浮点数范围,包含起始值和结束值,用于浮点数区间查询。例如,包含小数的温度范围、价格区间。 | ||
存储长整数范围,包含起始值和结束值,用于大整数区间查询。例如,查询订单ID在指定区间内的记录。 | ||
存储双精度浮点数范围,包含起始值和结束值,用于高精度的数值区间查询。例如,金融数据中的价格波动范围 | ||
存储IP地址范围,用于IP地址段匹配。例如,屏蔽指定范围的IP地址。 | ||
存储日期范围,包括开始时间和结束时间,用于时间区间查询。例如,活动时间、订单有效期。 | ||
子数据类型 说明 用于处理嵌套或复杂结构的数据。 | 存储JSON对象,包含无结构化的嵌套数据。例如,用户配置信息。 | |
可查询的嵌套对象,支持独立索引。用于存储多个独立子对象。例如,产品评论、订单详情。 | ||
文本与关键词类型 | 用于全文搜索,支持分词。适用于非结构化内容,例如,商品描述、文章内容。 | |
用于精确匹配,不进行分词。适用于结构化内容,例如,ID、邮箱地址。 | ||
用于存储索引中值相同的固定值(即所有文档的该字段必须具有相同值)。例如,版本号、环境标识 | ||
适用于全文搜索,但无需存储或高亮显示的搜索场景。该方式能够有效节省存储空间,提升搜索性能。 | ||
日期与时间类型 | 日期时间格式,精确到毫秒。用于存储时间序列数据(例如,日志数据)或事件的日期。 | |
日期时间格式,精确到纳秒。用于存储高精度时间戳,例如,金融交易。 | ||
二进制类型 | 可直接存储原始二进制数据(例如,二进制日志)。 | |
布尔类型 | 存储布尔值( | |
地理位置类型 | 存储地理坐标(即单个点的经纬度),用于位置点查询。例如,商店坐标。 | |
存储复杂几何形状(例如,多边形),用于区域匹配。例如,行政区边界查询。 | ||
存储地理坐标(即单个点的经纬度),用于位置点查询,常用于关联字段。例如,订单与配送地址关联。 | ||
IP与网络类型 | 用于IPv4或IPv6地址的存储与查询。 | |
向量类型 | 存储密集向量,常用于机器学习。例如,图像向量、文本嵌入。 | |
存储稀疏向量(仅存储非零值和索引),常用于高维稀疏数据。例如,文本特征。 | ||
其他类型 | 存储嵌套对象或数组。用于非常规聚合或存储非结构化数据。 | |
基于通配符的文本匹配查询,用于在字段中查找符合特定模式的文本。例如, 使用 | ||
存储地理空间几何形状(例如,多边形、线、区域等),用于处理复杂的地理区域范围和空间关系查询。 | ||
别名可用于指向一个或多个索引,后续通过一个别名,即可统一查询多个索引的数据。 例如,将 | ||
用于控制文档更新的并发性和数据一致性,常用于冲突检测,避免多个客户端同时修改同一文档所导致的数据覆盖或不一致问题。 |
支持的索引配置
检索增强型应用(8.17版)支持的索引配置分为映射限制配置及索引通用配置两类,您可按需配置。
映射限制配置
索引映射限制相关的配置项,用于限制字段映射的数量,避免映射字段过多,导致索引性能下降。检索增强型应用(8.17版)支持的映射限制配置如下。
配置项 | 描述 |
用于设置字段名的最大长度,防止字段名过长,占用过多内存。 | |
用于设置嵌套字段(即 | |
用于设置嵌套字段(即 | |
用于设置单个文档中嵌套对象的最大数量,避免文档包含过多嵌套对象,导致内存不足。默认为 | |
用于设置索引中的最大字段数,防止字段过多,导致索引膨胀影响查询性能。默认为 | |
index.mapping.coerce | 是否强制转换输入值的字段类型(例如,将字符串
|
index.mapping.ignore_malformed | 是否忽略不符合字段类型的数据,取值如下:
|
索引通用配置
索引通用配置用于定义索引的底层行为和资源分配(例如,分片数量、分词规则等),合理的配置索引有助于提升查询及写入性能、提高资源利用率、高效管理数据。检索增强型应用(8.17版)支持的索引通用配置如下。
类别 | 配置项 | 描述 |
索引核心配置 | 用于设置索引的主分片数,控制数据分布和并行处理能力。默认为 | |
用于设置使用哪种压缩格式来存储数据。取值如下:
| ||
用于设置分片数据从内存刷新到磁盘的时间间隔,可调整写入性能及查询实时性。默认为 | ||
分析器与管道 | index.analysis.* | 自定义分析器、分词器、过滤器等,用于控制文本字段的分词规则。 |
插入文档时默认使用的数据管道,用于系统预处理数据(例如,格式转换、字段计算)。 | ||
文档插入后的最终处理管道,用于确保数据符合规范(例如,过滤加密或敏感字段)。 | ||
查询与排序 | 定义当所查询的字符串未指定字段时,默认会匹配哪些字段。例如,将查询语句 | |
定义文档在分片内的排序规则,用于加速查询(例如,按时间排序)。 | ||
索引阻塞 | 限制对某个索引可执行的操作类型(例如,写入、删除、元数据访问),用于维护或调试场景下临时锁定索引。 | |
索引性能 | index.max_adjacency_matrix_filters | 用于设置邻接矩阵查询的复杂度阈值,防止因条件过多或较复杂,导致内存溢出或性能下降。默认为 |
单个搜索请求中最大允许的 说明
| ||
用于设置嵌套查询或聚合中 说明
| ||
用于设置Ngram分词器中分片长度的最大差值,防止因分词器配置不当导致索引膨胀或性能下降。 | ||
用于设置单个索引的最大刷新监听器数量,避免监听器过多,影响刷新性能。 | ||
用于设置正则表达式或前缀查询的最大长度,防止相关内容较长,影响查询速度。默认为 | ||
用于设置重评分操作(即通过更复杂的评分模型重新排序结果)的最大文档窗口大小,以限制该过程的资源消耗。默认为 | ||
用于设置分页查询的最大结果窗口大小,防止高开销的分页查询,例如, | ||
用于设置单个搜索请求中脚本字段的最大数量,限制脚本计算的资源消耗。默认为 | ||
用于控制Shingle分词器中分片长度的最大差值,防止分词器生成过多组合词。默认为 | ||
用于设置单个查询或聚合中,允许添加的最大条件数,避免条件列表过大导致内存不足,影响性能。默认为 | ||
index.max_prefix_length | 用于设置前缀查询的最大长度,防止前缀超长,影响查询性能。默认为 | |
index.max_wildcard_length | 用于设置通配符查询的最大长度,限制通配符查询的复杂度,避免全表扫描。默认为 |