ElasticSearch——数据建模最佳实践
如何建模
mapping 设计非常重要,需要从两个维度进行考虑:
- 功能:搜索、排序、聚合
- 性能:存储的开锁、内存的开销、搜索的性能
mapping 注意事项:
- 加入新字段很容易(必要时需要 update_by_query)
- 更新删除字段不允许(需要 reindex 重建数据)
最佳实践
1、不允许自动新增字段,将 dynamic 设置成 strict。默认为 true;
2、不需要分词的字段,将 type 设置成 keyword。默认使用了多字段特性,text、keyword这2种类型都有;
3、不需要检查的字段,将 index 设置成 false。默认为 true;
4、不需要排序和聚合的字段,将 doc_values 设置成false。默认为 true;
5、不需要检查、排序、聚合的字段,将 enable 设置成 false,仅做存储;
6、type = text 的字段,默认不可以排序,如需要排序,将 fielddata 设置成 true,默认为 false;
7、单个索引避免过多字段,默认最大值为1000;
8、避免空值引起的聚合不准确的问题;
9、避免使用正则查询;
10、尽量不要设计成索引关联,可冗余多一些字段,以空间换时间,如实在无法避免,按以下方式处理:
ElasticSearch——数据建模最佳实践的更多相关文章
- ES 32 - Elasticsearch 数据建模的探索与实践
目录 1 什么是数据建模? 2 如何对 ES 中的数据进行建模 2.1 字段类型的建模方案 2.2 检索.聚合及排序的建模方案 2.3 额外存储的建模方案 3 ES 数据建模实例演示 3.1 动态创建 ...
- Elasticsearch 数据建模指南
文章转载自:https://mp.weixin.qq.com/s/vSh6w3eL_oQvU1mxnxsArA 0.题记 我在做 Elasticsearch 相关咨询和培训过程中,发现大家普遍更关注实 ...
- [转] [Elasticsearch] 数据建模 - 处理关联关系(1)
[Elasticsearch] 数据建模 - 处理关联关系(1) 标签: 建模elasticsearch搜索搜索引擎 2015-08-16 23:55 6958人阅读 评论(0) 收藏 举报 分类: ...
- Elasticsearch数据建模笔记
数据建模 数据建模是创建数据模型的过程 数据模型是对真实世界进行抽象描述的一种工具和方法,实现对现实世界的映射 三个过程:概念模型=>逻辑模型=>数据模型 数据模型:结合具体的数据库,在满 ...
- Bulk Load-HBase数据导入最佳实践
一.概述 HBase本身提供了非常多种数据导入的方式,通常有两种经常使用方式: 1.使用HBase提供的TableOutputFormat,原理是通过一个Mapreduce作业将数据导入HBase 2 ...
- 【读书笔记】Elasticsearch集成Hadoop最佳实践
前言 本文记录[Elasticsearch集成Hadoop最佳实战]读书笔记 本书总计209页,共7章节,计划时间:20180712-20180717 (每天至少40页) 本文代码地址: https: ...
- ElasticSearch 数据建模
公号:码农充电站pro 主页:https://codeshellme.github.io 通常在使用 ES 构建数据模型时,需要考虑以下几点: 字段类型 是否需要搜索与分词 是否需要聚合与排序 是否需 ...
- Elasticsearch集成Hadoop最佳实践.pdf(内含目录)
Elasticsearch服务器开发(第2版) 介绍: ElasticSearch是一个开源的分布式搜索引擎,具有高可靠性,支持非常多的企业级搜索用例.ElasticsearchHadoop作为一个完 ...
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
写在前面 :从提出需求到完美的解决问题,实现过程是曲折的. 需求:在前(web client)后(Restful Service)端完全解耦的模式框架下,webclient需要请求 Service 返 ...
随机推荐
- Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
链接: https://codeforces.com/contest/1251/problem/B 题意: A palindrome is a string t which reads the sam ...
- PHP yield占用内存测试
function com($start) { $tmp = []; for($i=0; $i<300000; $i++){ $tmp[] = $i; } $end = memory_get_us ...
- sql server 很好的基础练习 <学生表-老师表-课程表-选课表>
表结构 --学生表tblStudent(编号StuId.姓名StuName.年龄StuAge.性别StuSex) --课程表tblCourse(课程编号CourseId.课程名称CourseName. ...
- 动态menu导航条以及treeview树
1.menu表数据 2.在后台生成html内容后,前台利用nav-h.css生成menu导航条,利用Jquery的treeview插件生成menu树 前台coding: <!DOCTYPE ht ...
- URL中的String参数问题
测试一个查询数据的接口,类似这样的URL:.../search?type=Astring,在浏览器中输入URL获取到的数据为空,但通过其它方式确认数据库中确实已有数据,怀疑是接口实现问题.找接口实现的 ...
- luogu 3919
主席树 #include <iostream> #include <cstdio> #include <algorithm> #include <cmath& ...
- java equals 和 == 区别
equals 可以重写, == 不可重写 equals 是方法 equals 是 Object 的方法. 基本作用:判断两个对象是否为引用 public class Object { // 省略部分代 ...
- As I Began to Love Myself
As I Began to Love Myself: Charlie Chaplin on his 70th birthday As I began to love myself I found th ...
- 1、Kfaka 部署
一.使用Kfaka自带的zookeeper服务. 1.下载Kafka,下载地址: http://kafka.apache.org/downloads 2.区分Kfaka版本: Scala 2.12 - ...
- Synchronized 原理
1.同步代码块: 反编译结果: monitorenter : 每个对象有一个监视器锁(monitor).当monitor被占用时就会处于锁定状态,线程执行monitorenter指令时尝试获取moni ...