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查询,但是性能不够好
    • 特别是将通配符放在开头,会导致性能的灾难
  • 避免空值引起的聚合不准
rest 复制代码
PUT /scores
{"mappings":{"properties":{"score":{"type":"float","null_value":0}}}}
  • 为索引的 Mapping 加入 Meta 信息
    • Mappings设置非常重要,需要从两个维度进行考虑
      • 功能︰搜索,聚合,排序
      • 性能︰存储的开销; 内存的开销; 搜索的性能
    • Mappings设置是一个迭代的过程
      • 加入新的字段很容易(必要时需要update_by_query)
      • 更新删除字段不允许(需要Reindex重建数据)
      • 最好能对 Mappings 加入 Meta 信息,更好的进行版本管理
      • 可以考虑将 Mapping 文件上传 git 进行管理
rest 复制代码
PUT /my_index
{"mappings":{"_meta":{"index_version_mapping":"1.1"}}}
相关推荐
Elastic 中国社区官方博客2 小时前
Elasticsearch:使用预计算上下文降低 agent 成本
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
SLD_Allen3 小时前
企业级 AI Agent: MCP、CLI、Skills,如何定位、该怎么选、最佳实践。
大数据·人工智能·elasticsearch·企业级 ai agent
幻灭行度4 小时前
Elasticsearch 索引备份与恢复实践(基于 NFS 共享仓库)
elasticsearch
做个文艺程序员5 小时前
第09篇:ES 数据同步方案——Canal + Logstash + Flink 全方案对比与实战
大数据·elasticsearch·mysql同步es·es数据同步·flink实时同步·es增量同步
做个文艺程序员5 小时前
第04篇:Query DSL 全景与高级检索实战——从入门查询到复杂业务场景
elasticsearch·elasticsearch分词·elasticsearch检索
杰克尼14 小时前
天机学堂复习总结(day03-day04)
java·开发语言·redis·elasticsearch·spring cloud
一勺菠萝丶1 天前
Git Tag 使用教程:如何打 Tag、切换 Tag、推送 Tag 和删除 Tag
大数据·git·elasticsearch
Elastic 中国社区官方博客1 天前
Kibana 中的 AI Chat 现在可以原生渲染仪表板
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生
Elastic 中国社区官方博客1 天前
Elastic 的 ML 与 AI Assistant 如何将 NOC 中 802.1x 故障排查时间从 20 分钟缩短到数秒
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索·可用性测试
Gavin-Wang1 天前
swift 项目 commit 规范
大数据·elasticsearch·搜索引擎