当前位置: 首页 > news >正文

ES索引配置字段解读

文章目录

      • 一、Settings:索引的集群与功能配置
        • 1. 核心配置项
          • (1)静态设置(索引创建后不可修改)
          • (2)动态设置(索引创建后可修改)
        • 2. 配置示例
      • 二、Mappings:索引的数据结构定义
        • 1. 核心概念
        • 2. 核心配置项
        • 3. 配置示例
      • 三、Aliases:索引的别名(访问入口)
        • 1. 核心作用
        • 2. 核心操作
          • (1)创建索引时绑定别名
          • (2)给已有索引添加/删除别名
          • (3)查询别名关联的索引
          • (4)带过滤条件的别名
        • 3. 使用场景示例
      • 四、三者关系与核心总结

Elasticsearch(ES)中, settingsmappingsaliases 是索引的三大核心配置,分别控制索引的 集群行为数据结构访问入口,三者共同定义了索引的功能和使用方式。

一、Settings:索引的集群与功能配置

settings 用于定义索引的集群级参数功能开关,控制索引的分片、副本、分词器、刷新频率等核心行为,分为“静态设置”和“动态设置”两类。

1. 核心配置项
(1)静态设置(索引创建后不可修改)
  • 分片与副本:索引数据的分布式存储规则(核心配置)
    • number_of_shards:主分片数量(默认1),创建后不可修改,需提前预估数据量(单分片建议50-100GB)。
    • number_of_replicas:每个主分片的副本数量(默认1),控制高可用和查询并发。
  • 索引生命周期:绑定ILM策略(如自动冷热分离、过期删除)
    • index.lifecycle.name:ILM策略名称(如log_policy)。
(2)动态设置(索引创建后可修改)
  • 刷新频率:控制数据写入后可查询的延迟(近实时性核心)
    • index.refresh_interval:默认1秒,写入密集场景可设为30秒(-1关闭自动刷新)。
  • 字段限制:防止字段爆炸或过度占用资源
    • index.mapping.total_fields.limit:最大字段数(默认1000),避免动态映射导致字段泛滥。
    • index.mapping.depth.limit:字段嵌套深度(默认20),防止嵌套过深影响查询性能。
  • 缓存与合并:优化查询和写入性能
    • indices.queries.cache.size:查询缓存大小(默认10%堆内存)。
    • index.merge.scheduler.max_thread_count:合并线程数(默认CPU核心数的50%)。
2. 配置示例
PUT /my_index
{"settings": {"number_of_shards": 3,  // 静态:3个主分片"number_of_replicas": 1, // 动态:1个副本(可后续修改)"index.refresh_interval": "5s", // 动态:5秒刷新一次"index.mapping.total_fields.limit": 2000, // 动态:最大2000个字段"analysis": { // 静态:自定义分词器(属于settings子配置)"analyzer": {"my_ik_analyzer": {"type": "custom","tokenizer": "ik_max_word"}}}}
}// 动态修改副本数(无需重建索引)
PUT /my_index/_settings
{"index.number_of_replicas": 2
}

二、Mappings:索引的数据结构定义

mappings 类似数据库的“表结构”,定义了文档中字段的类型分词器是否索引聚合规则等,决定了ES如何存储和解析数据。

1. 核心概念
  • 字段类型(Field Types):指定字段的数据类型,ES支持多种类型,核心分类:
    • 文本类:text(全文检索,会分词)、keyword(精确匹配,不分词)。
    • 数值类:longintegerdouble(支持范围查询和聚合)。
    • 日期类:date(支持时间范围查询,需指定格式)。
    • 复杂类型:object(嵌套对象)、nested(独立嵌套文档)、array(数组,无需显式定义类型)。
  • 动态映射(Dynamic Mapping):ES默认自动推断字段类型(如数字→long、文本→text+keyword子字段),生产环境建议关闭(dynamic: false),避免类型错误。
  • 元字段(Meta-fields):ES内置的文档元信息,如_id(文档唯一ID)、_source(原始文档内容)、_timestamp(时间戳)。
2. 核心配置项
  • type:字段类型(如textlong)。
  • analyzer:索引时使用的分词器(如ik_max_word)。
  • search_analyzer:搜索时使用的分词器(默认与analyzer一致)。
  • index:是否索引(true可查询,false仅存储,不可查询)。
  • store:是否单独存储(默认false,依赖_source存储,true可单独读取该字段,节省_source传输开销)。
  • format:日期字段的格式(如"yyyy-MM-dd HH:mm:ss")。
  • ignore_above:超过指定长度的字符串不索引(如keyword字段设为256,超过256字符的内容不参与查询)。
3. 配置示例
PUT /my_index
{"mappings": {"properties": {"product_name": { // 商品名称:全文检索+精确匹配"type": "text","analyzer": "ik_max_word", // 索引时分词器"search_analyzer": "ik_smart", // 搜索时分词器(更精准)"fields": {"keyword": { // 子字段:用于聚合和精确匹配"type": "keyword","ignore_above": 256}}},"price": { "type": "double" }, // 价格:数值类型"stock": { "type": "integer" }, // 库存:整数类型"create_time": { // 创建时间:日期类型"type": "date","format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" // 支持多格式},"tags": { "type": "keyword" }, // 标签:精确匹配(数组类型无需显式定义)"description": { // 商品描述:仅存储不索引"type": "text","index": false}}}
}

三、Aliases:索引的别名(访问入口)

aliases 是索引的“虚拟名称”,类似数据库的“视图”,可关联一个或多个索引,用于简化索引访问、实现无缝切换、分组管理等。

1. 核心作用
  • 简化访问:用简短别名替代长索引名(如用prod替代product_202501)。
  • 索引切换:无感知切换后端索引(如从prod_v1切换到prod_v2,无需修改业务代码)。
  • 索引分组:将多个相关索引关联到同一别名(如log_202501log_202502关联到logs,查询时可一次性查询所有分组索引)。
  • 过滤与路由:给别名绑定过滤条件(如仅查询status: active的文档)或路由规则(如按用户ID路由到指定分片)。
2. 核心操作
(1)创建索引时绑定别名
PUT /product_202501
{"aliases": {"prod_current": {}, // 绑定别名prod_current"prod_2025": {} // 同时绑定到分组别名prod_2025}
}
(2)给已有索引添加/删除别名
// 添加别名:给product_202502添加prod_current和prod_2025别名
POST /_aliases
{"actions": [{ "add": { "index": "product_202502", "alias": "prod_current" } },{ "add": { "index": "product_202502", "alias": "prod_2025" } }]
}// 删除别名:从product_202501移除prod_current别名
POST /_aliases
{"actions": [{ "remove": { "index": "product_202501", "alias": "prod_current" } }]
}
(3)查询别名关联的索引
GET /_alias/prod_current // 查看prod_current别名关联的索引
GET /product_202501/_alias // 查看product_202501的所有别名
(4)带过滤条件的别名
POST /_aliases
{"actions": [{"add": {"index": "product_202501","alias": "prod_active","filter": { "term": { "status": "active" } } // 仅查询状态为active的文档}}]
}
3. 使用场景示例
  • 业务代码查询时,直接使用别名prod_current,无需关心后端实际索引名。
  • 当需要切换索引(如季度数据归档,新建product_202502),只需通过_aliases操作切换别名绑定,业务无感知。
  • 查询2025年所有商品时,直接查询别名prod_2025,自动聚合product_202501product_202502等索引的数据。

四、三者关系与核心总结

配置项核心作用可修改性核心关联
settings控制索引的集群行为与性能静态配置不可改,动态可改分词器配置需在settings中定义,供mappings使用
mappings定义数据结构与解析规则字段可新增,类型不可改依赖settings中的分词器,决定数据如何存储和查询
aliases提供灵活的索引访问入口可随时添加/删除/切换不依赖settingsmappings,仅作为访问代理

核心总结

  • settings 管“集群层面”(分片、性能、功能),mappings 管“数据层面”(结构、解析),aliases 管“访问层面”(入口、切换)。
  • 索引创建时需重点规划settings(静态分片)和mappings(字段类型),aliases可后续灵活调整,是实现索引生命周期管理的关键。
http://www.dtcms.com/a/578337.html

相关文章:

  • linux服务器自动备份数据库脚本
  • 免费的微信视频号下载器
  • 做ic销售的各种网站dede网站安全设置
  • 绥化建设网站电子商城系统平台
  • 影刀RPA一键生成直播链接!AI智能选品,效率提升2000%[特殊字符]
  • 个人网站代码编写海口创建公司
  • 用jsp实现网站开发的流程没有网站如何做SEO推广有用吗
  • 什么网站专门做境外当地游手机网站设计标准
  • 一些题目~~~
  • 5. Unix/Linux 系统常用类型别名清单
  • Transformers之外的注意力机制
  • js(DOM)基础:12、DOM查询3、DOM增删改、DOM删除列表、DOM添加列表、DOM操作遇到问题
  • 论项目的风险管理及应用
  • 上海闸北区网站建设初期做网站
  • 小型公司网站建设知乎网站建设与开发开题报告
  • 高端网站的制作有那些网站
  • UE4第二次构建时,引擎是否主动删除掉Saved/Cooked目录
  • asynccontextmanager
  • 天津大学邓意达/陈亚楠团队Nano-Micro Lett.研究:热冲击法促新型纳米片自发成长,提升全水解效率
  • 流程架构的解耦与进化设计
  • 企业发展历程网站游戏开发软件免费下载
  • 枣庄市住房和城乡建设局网站如何做网站微信小程序
  • 广州网站排名优化公司20亿做网站
  • Java 获取拼多多商品详情简易版 API 接口实现
  • 邢台市做网站电话wordpress用户名可以修改
  • 成都有几家做网站的公司小型crm系统
  • 工程计算 - Mathcad® 替代方案
  • 广州网站设计建设网站改版 重新收录
  • ESP32C3初应用:点灯及ADC
  • 301 是什么意思?——HTTP 状态码详解与应用