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 中国社区官方博客1 天前
不到 5 分钟完成本地部署:Jina embedding 模型现已支持本地部署
大数据·人工智能·elasticsearch·搜索引擎·embedding·jina
二进制流水搬运工1 天前
入职第一天拉了23个仓库,我写了个脚本解放双手
大数据·elasticsearch·搜索引擎
Elasticsearch1 天前
在不到一小时内将 Datadog Kubernetes 仪表板迁移到 Elastic Observability
elasticsearch
.柒宇.1 天前
Elasticsearch 核心概念与系统架构详解
elasticsearch·系统架构
风行無痕1 天前
单机Elasticsearch 8.19.18安全升级到9.4.3的过程
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客1 天前
使用重新设计的 AutoOps 更快地进行 Elasticsearch 问题排查
大数据·运维·前端·人工智能·elasticsearch·搜索引擎·全文检索
阿拉雷️1 天前
【搜索实战】Spring Boot 3.3 + AI Agent × Elasticsearch:让AI自动优化搜索策略,查询速度从2秒压到50毫秒
人工智能·spring boot·elasticsearch
阿里云大数据AI技术2 天前
阿里云 ES AI 引擎版:面向 Agent 场景,为亿级租户、千亿规模向量设计的搜索引擎
人工智能·elasticsearch·agent
阿里云大数据AI技术2 天前
FalconSeek 技术解析:阿里云 Elasticsearch 云原生内核如何让查询性能飙升600%
人工智能·elasticsearch
Elastic 中国社区官方博客2 天前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana