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

ElasticSearch-数据建模

  • 处理关联关系
    • Object: 优先考虑反范式(Denormalization)
    • Nested: 当数据包含多数值对象,同时有查询需求
    • Child/Parent:关联文档更新非常频繁时
  • 避免过多字段
    • 一个文档中,最好避免大量的字段
      • 过多的字段数不容易维护
      • Mapping 信息保存在 Cluster State 中,数据量过大,对集群性能会有影响
      • 删除或者修改数据需要reindex
    • 默认最大字段数是1000,可以设置index.mapping.total_fields.limit限定最大字段数
    • 生产环境中,尽量不要打开 Dynamic,可以使用Strict控制新增字段的加入
      • true :未知字段会被自动加入
      • false :新字段不会被索引,但是会保存在_source
      • strict :新增字段不会被索引,文档写入失败
    • 对于多属性的字段,比如cookie,商品属性,可以考虑使用Nested
  • 避免正则,通配符,前缀查询
    • 正则,通配符查询,前缀查询属于Term查询,但是性能不够好
    • 特别是将通配符放在开头,会导致性能的灾难
  • 避免空值引起的聚合不准
PUT /scores
{"mappings":{"properties":{"score":{"type":"float","null_value":0}}}}
  • 为索引的 Mapping 加入 Meta 信息
    • Mappings设置非常重要,需要从两个维度进行考虑
      • 功能︰搜索,聚合,排序
      • 性能︰存储的开销; 内存的开销; 搜索的性能
    • Mappings设置是一个迭代的过程
      • 加入新的字段很容易(必要时需要update_by_query)
      • 更新删除字段不允许(需要Reindex重建数据)
      • 最好能对 Mappings 加入 Meta 信息,更好的进行版本管理
      • 可以考虑将 Mapping 文件上传 git 进行管理
PUT /my_index
{"mappings":{"_meta":{"index_version_mapping":"1.1"}}}

http://www.mrgr.cn/news/18684.html

相关文章:

  • Java 入门指南:Java 并发编程 —— StampedLock 读写锁
  • 将python项目打包成一个可执行文件(包含需要的资源文件)
  • 无人机地理测绘技术详解
  • 自定义实现log4j的appender
  • React 更新界面
  • 前端框架的演变与选择
  • 大模型开发转行全攻略:必备知识、技能与学习路径详解,大模型零基础入门到精通
  • 视频合并怎么操作?这篇文章告诉你
  • 快速写一个自己的flutter应用(新手入门)
  • 数据首发!车载手机无线充前装搭载率破40%,哪些玩家在领跑
  • 【编程底层思考】什么是逃逸分析,基于逃逸分析可以做哪些优化(分离对象或标量替换\栈上分配\同步锁消除)
  • 包装和类练习(1)
  • 兔子生崽问题
  • 了解Python的生成器及其优点
  • window安装rocketmq
  • 网络安全知识手册
  • 【BIOS】如何找到SPI的读模式
  • 全网最全的安服工程师修炼手册
  • 机器学习中的增量学习(Incremental Learning,IL)策略是什么?
  • [数据集][目标检测]街道乱堆垃圾检测数据集VOC+YOLO格式94张1类别