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

济南公司网站建设公司哪家好深圳网站seo

济南公司网站建设公司哪家好,深圳网站seo,建设行业门户网站需要什么条件,做相册视频的网站Elasticsearch 核心技术#xff08;二#xff09;#xff1a;映射 1.什么是映射#xff08;Mapping#xff09;1.1 元字段#xff08;Meta-Fields#xff09;1.2 数据类型 vs 映射类型1.2.1 数据类型1.2.2 映射类型 2.实际运用案例案例 1#xff1a;电商产品索引映射案… Elasticsearch 核心技术二映射 1.什么是映射Mapping1.1 元字段Meta-Fields1.2 数据类型 vs 映射类型1.2.1 数据类型1.2.2 映射类型 2.实际运用案例案例 1电商产品索引映射案例 2动态模板设置 3.动态映射与静态映射详解3.1 动态映射 (Dynamic Mapping)3.1.1 动态映射的三种模式3.1.2 动态映射示例 3.2 静态映射Explicit Mapping静态映射示例 3.3 对比3.4 最佳实践建议 4.映射修改详解4.1 可以修改的内容4.2 不可修改的内容4.3 修改映射的解决方案4.4 案例将字符串字段从 text 改为 keyword4.4.1 错误方式直接修改会失败4.4.2 正确方式通过重建索引 4.5 注意事项 5.注意事项 1.什么是映射Mapping 映射是 Elasticsearch 中定义文档及其包含字段如何存储和索引的过程。它相当于关系型数据库中的表结构定义决定了 每个字段的数据类型字段是否被索引字段的索引方式字段的分析器设置字段的格式如日期格式 1.1 元字段Meta-Fields 元字段是 Elasticsearch 为每个文档自动创建的内部字段用于管理文档的元数据。常见的元字段包括 标识元字段 _index文档所属的索引_id文档的唯一 ID 文档源元字段 _source存储原始 JSON 文档 索引元字段 _field_names包含非空值的所有字段 路由元字段 _routing用于将给定文档路由到指定的分片。 其他元字段 _meta应用特定的元数据_version文档版本号 例如 Kibana 中自带的 sample_data_ecommerce 示例数据。 下面框出来的就是元字段信息。 1.2 数据类型 vs 映射类型 1.2.1 数据类型 指字段值的具体类型如 核心类型text、keyword、long、integer、short、byte、double、float、boolean、date复杂类型object、nested地理类型geo_point、geo_shape特殊类型ip、completion、token_count 1.2.2 映射类型 在 Elasticsearch 7.0 之前索引可以包含多个类型类似于表但 7.0 之后已弃用每个索引现在只有一个隐式的 _doc 类型。 2.实际运用案例 案例 1电商产品索引映射 PUT /products {mappings: {properties: {name: { type: text, analyzer: ik_max_word },price: { type: double },description: { type: text },category: { type: keyword },tags: { type: keyword },created_at: { type: date, format: yyyy-MM-dd HH:mm:ss },specs: { type: object },location: { type: geo_point }}} }案例 2动态模板设置 PUT /my_index {mappings: {dynamic_templates: [{strings_as_keywords: {match_mapping_type: string,mapping: {type: keyword}}}]} }3.动态映射与静态映射详解 3.1 动态映射 (Dynamic Mapping) 动态映射是 Elasticsearch 自动检测和创建字段映射的能力。当索引一个新文档时如果包含未定义的字段Elasticsearch 会根据字段值自动推断数据类型并创建映射。 3.1.1 动态映射的三种模式 true默认自动添加新字段false忽略新字段不索引但会存储在 _source 中strict拒绝包含新字段的文档抛出异常 3.1.2 动态映射示例 # 创建索引时不定义映射使用默认动态映射 PUT /dynamic_index# 插入包含新字段的文档 POST /dynamic_index/_doc/1 {name: John Doe, # 自动识别为text字段age: 30, # 自动识别为longbirth_date: 1990-01-01, # 自动识别为dateis_active: true, # 自动识别为booleansalary: 5000.50, # 自动识别为floattags: [tech, sports], # 自动识别为text数组address: { # 自动识别为objectstreet: 123 Main St,city: New York} }查看自动生成的映射 GET /dynamic_index/_mapping# 返回结果示例 {dynamic_index: {mappings: {properties: {address: {properties: {city: { type: text, fields: { keyword: { type: keyword } } },street: { type: text, fields: { keyword: { type: keyword } } }}},age: { type: long },birth_date: { type: date },is_active: { type: boolean },name: { type: text, fields: { keyword: { type: keyword } } },salary: { type: float },tags: { type: text, fields: { keyword: { type: keyword } } }}}} }3.2 静态映射Explicit Mapping 静态映射是手动预定义索引的字段结构和数据类型在创建索引时明确指定每个字段的类型和属性。 静态映射示例 # 创建索引时明确定义映射 PUT /static_index {mappings: {dynamic: strict, # 严格模式禁止未定义的字段properties: {name: {type: text,analyzer: standard,fields: {keyword: { type: keyword }}},age: { type: integer },birth_date: {type: date,format: yyyy-MM-dd||epoch_millis},is_active: { type: boolean },salary: { type: scaled_float, scaling_factor: 100 },tags: {type: keyword},address: {type: object,properties: {street: { type: keyword },city: { type: keyword },coordinates: { type: geo_point }}},comments: {type: nested,properties: {user: { type: keyword },message: { type: text },rating: { type: byte }}}}} }尝试插入未定义字段的文档 POST /static_index/_doc/1 {name: Jane Smith,age: 28,new_field: test # 将抛出异常因为dynamicstrict }# 错误响应 {error: {root_cause: [{type: strict_dynamic_mapping_exception,reason: mapping set to strict, dynamic introduction of [new_field] within [_doc] is not allowed}]},status: 400 }3.3 对比 特性动态映射静态映射字段创建方式自动推断手动预定义灵活性高低可控性低高适合场景开发初期、数据结构不确定生产环境、数据结构稳定性能影响可能产生不理想的映射可优化映射提升性能维护成本低初期高后期整理高前期低后期数据一致性可能不一致高度一致 3.4 最佳实践建议 开发阶段可以使用动态映射快速原型开发。 PUT /dev_index {mappings: {dynamic: true} }过渡阶段使用动态模板dynamic templates控制自动映射。 PUT /transition_index {mappings: {dynamic_templates: [{strings_as_keywords: {match_mapping_type: string,mapping: {type: keyword}}}]} }生产环境推荐使用静态映射。 PUT /prod_index {mappings: {dynamic: strict,properties: {// 明确定义所有字段}} }混合使用可以结合两者优势。 PUT /hybrid_index {mappings: {dynamic: false, # 不自动索引新字段但存储在_sourceproperties: {// 明确定义已知字段}} }通过合理选择映射策略可以在灵活性和可控性之间取得平衡为不同阶段的业务需求提供最合适的解决方案。 4.映射修改详解 在 Elasticsearch 中映射创建后是可以修改的但有重要的限制和注意事项。 4.1 可以修改的内容 添加新字段任何时候都可以向现有映射添加新字段。 PUT /my_index/_mapping {properties: {new_field: { type: text }} }修改某些字段属性 可以更新 fields 多字段设置可以修改 analyzer、search_analyzer 等分析相关设置可以修改 ignore_abovekeyword 字段可以修改 null_value 设置 动态映射规则可以更新动态模板dynamic templates 4.2 不可修改的内容 字段数据类型不能更改已有字段的数据类型。 例如不能将 text 改为 keyword不能将 long 改为 integer。 已索引的字段不能更改已索引字段的基本结构。 例如不能将单字段改为多字段。 字段名称不能直接重命名字段。 4.3 修改映射的解决方案 当需要做不允许的修改时可以考虑以下方案 重建索引Reindex 创建新索引定义新映射。使用 Reindex API 将数据从旧索引复制到新索引。示例POST _reindex {source: { index: old_index },dest: { index: new_index } }使用别名Alias 创建指向新索引的别名。无缝切换应用查询到新索引。示例POST _aliases {actions: [{ remove: { index: old_index, alias: my_alias } },{ add: { index: new_index, alias: my_alias } }] }多字段Multi-fields 为字段添加不同数据类型的多字段版本。示例PUT /my_index/_mapping {properties: {my_field: {type: text,fields: {keyword: { type: keyword }}}} }4.4 案例将字符串字段从 text 改为 keyword 4.4.1 错误方式直接修改会失败 PUT /my_index/_mapping {properties: {category: { type: keyword } // 如果原先是text这会报错} }4.4.2 正确方式通过重建索引 // 1. 创建新索引 PUT /my_index_v2 {mappings: {properties: {category: { type: keyword }}} }// 2. 重新索引数据 POST _reindex {source: { index: my_index },dest: { index: my_index_v2 } }// 3. 切换别名 POST _aliases {actions: [{ remove: { index: my_index, alias: products } },{ add: { index: my_index_v2, alias: products } }] }4.5 注意事项 生产环境谨慎操作映射更改可能影响现有查询和应用程序。停机时间考虑重建大索引可能需要时间规划好维护窗口。版本兼容性Elasticsearch 不同版本对映射修改的支持可能不同。监控影响修改后监控集群性能和查询结果。备份数据重大映射修改前建议备份重要数据。测试环境验证先在测试环境验证映射修改的效果。 通过合理规划映射修改策略可以在最小化影响的情况下实现索引结构的演进。 5.注意事项 提前规划映射生产环境中应预先定义好映射避免依赖动态映射避免映射爆炸 设置 index.mapping.total_fields.limit默认 1000使用 dynamic: false 或 dynamic: strict 控制动态字段 合理选择数据类型 需要全文搜索用 text需要精确匹配/聚合用 keyword数值类型选择最合适的范围如能用 integer 就不用 long 元字段使用 不要修改 _source 字段它是文档的原始 JSON使用 _routing 优化查询性能 映射更新限制 已有字段的映射类型不能更改只能添加新字段或修改某些参数如增加字段的 fields 性能考虑 避免过多的嵌套对象对于不搜索的字段设置 index: false 版本兼容性 Elasticsearch 7.x 及以后版本已移除映射类型概念升级时要注意 API 变化 通过合理设计映射可以显著提高 Elasticsearch 的查询性能和存储效率。
http://www.pierceye.com/news/900512/

相关文章:

  • 建设网站需要会什么简单网页代码html
  • 南通网站怎么推广淘客选品网站开发
  • 网站开发的风险与风险管理网站名字
  • 朝阳网站视频拍摄脚本
  • 嘉兴建站模板源码郑州网站开发的公司电话
  • 新乡网站开发的公司电话百度热搜风云榜
  • 福永网站的建设福州
  • 抚州市临川区建设局网站eaccelerator wordpress
  • 如何让网站自适应屏幕门户网站主要特点和功能
  • 网站维护费用怎么收网站下载的软件怎么安装
  • 做电子相册的网站省住房和城乡建设厅官方网站
  • 什么是自助网站网页设计与制作课件和素材
  • 如何为网站建设内容wordpress去水印插件
  • 办公家具网站模版制作手机软件网站
  • 诚信网站认证必需做吗网站建设mfdos
  • 廊坊网站建设哪家权威网址导航大全排名
  • 北京建站公司哪个好05网电子书
  • 权威网站设计wordpress通知站点360搜索
  • 做靓号网站凡客小程序
  • 创建网站开发公司公司做个网站
  • 做网站的工具+论坛html怎么自己做网站
  • 土木在线seo网站快速整站优化技术
  • 创造力网站设计建设有限公司网站
  • 如何做网站好看做h5小程序的网站
  • 济宁网站建设价格做网站公司深
  • ae成品免费下载网站申请一个app多少钱
  • 我想自己在网站上发文章 怎样做免费观看高清正能量直播下载
  • 做网站万网长春建站模板展示
  • 广州专业建网站公司福州网站制作
  • 西安烽盈网站建设郑州营销网站托管