ES索引的创建不能很随便,因为很多情况下不只ES一个人在作战,大多数是和kibana一起使用,而kibana的一个很大的作用就是统计,比如可以做统计报表,统计记录等各种统计操作,而要做统计,就需要创建index pattern,如下图(基于es7.6):

然后创建index pattern:

可以看到我随便输入一个pattern 名字,这里并没有匹配到任何index,这时候是不能创建这个pattern的,创建的pattern必须要能匹配相关的index才可以继续下一步

这个index pattern创建的好坏直接取决于在写入es的时候索引的形式是否规范,一个好的index pattern可以能够很好的匹配到响应的数据,进而能很好的更准确的做统计

所以一般我们会创建一个基类:

public class BaseDoc {@JsonIgnoreprivate String index;@JsonIgnoreprivate String type;@JsonIgnoreprivate String id;@JsonIgnoreprivate String routing;@JsonIgnoreprivate Long version;private Date creationDate;@JsonIgnoreprivate IndexingStrategyEnum indexingStrategy;}
IndexingStrategyEnum:
public enum IndexingStrategyEnum {WEEKLY("WEEKLY"),MONTHLY("MONTHLY"),QUARTERLY("QUARTERLY"),ANNUAL("ANNUAL");private String keyword;private static final String DECIMAL_FORMAT_PATTERN = "00";private static final String CONST_UNDERSCORE = "_";private IndexingStrategyEnum(String keyword) {this.keyword = keyword;}public String getIndexSuffix(Date date) {StringBuilder finalIndexName = new StringBuilder(CONST_UNDERSCORE);DateTime indexedDateTime = new DateTime(date.getTime());DecimalFormat formatter = new DecimalFormat(DECIMAL_FORMAT_PATTERN);switch (this) {case WEEKLY:finalIndexName.append(this.name().toLowerCase()).append(CONST_UNDERSCORE).append(indexedDateTime.getYear()).append(formatter.format(indexedDateTime.getWeekOfWeekyear()));break;case MONTHLY:finalIndexName.append(this.name().toLowerCase()).append(CONST_UNDERSCORE).append(indexedDateTime.getYear()).append(formatter.format(indexedDateTime.getMonthOfYear()));break;case QUARTERLY:finalIndexName.append(this.name().toLowerCase()).append(CONST_UNDERSCORE).append(indexedDateTime.getYear()).append(formatter.format((indexedDateTime.getMonthOfYear()-1)/3+1));break;case ANNUAL:finalIndexName.append(this.name().toLowerCase()).append(CONST_UNDERSCORE).append(indexedDateTime.getYear());break;default:break;}return finalIndexName.toString();}}

然后我们在基类的基础上创建自己的索引规范,任何进入ES的data都要继承这个规范就可以对索引进行有效的规范化管理了:

public class MyEsData extends BaseDoc {private static final String DATA_INDEX = "data_index";private static final String DATA_TYPE = "datatype";public MyEsData (){this.setCreationDate(new Date());this.setIndex(DATA_INDEX +"_xxxx");this.setType(DATA_TYPE);this.setIndexingStrategy(IndexingStrategyEnum.WEEKLY);}
}

Elasticsearch 之索引创建原则相关推荐

  1. es为mysql创建索引_ES(ElasticSearch) 索引创建

    环境:ES 6.2.2 os:Centos  7 kibana:6.2.2 介绍 索引是ElasticSearch存放数据的地方,可以理解为关系型数据库中的一个数据库.事实上,我们的数据被存储和索引在 ...

  2. MySQL之索引创建原则

    MySQL之索引创建原则 一.适合创建索引 1.字段的数值有唯一性限制 根据Alibaba规范,指明在业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引. 例如,学生表中的学号时具有唯一性的 ...

  3. mysql索引失效索引创建原则

    一.mysql索引失效: 1.like 以%开头,索引无效:当like前缀没有%,后缀有%时,索引有效. 2.or语句前后没有同时使用索引. 当or左右查询字段只有一个是索引,该索引失效,只有当or左 ...

  4. mysql 索引及索引创建原则

    是什么 索引用于快速的查询某些特殊列的某些行.如果没有索引, MySQL 必须从第一行开始,然后通过搜索整个表来查询有关的行.表越大,查询的成本越大.如果表有了索引的话,那么 MySQL 可以很快的确 ...

  5. es 创建索引 指定id_ES(ElasticSearch) 索引创建

    环境:ES 6.2.2 os:Centos  7 kibana:6.2.2 介绍 索引是ElasticSearch存放数据的地方,可以理解为关系型数据库中的一个数据库.事实上,我们的数据被存储和索引在 ...

  6. MySQL索引创建原则

    适合创建索引的场景 字段的数值有唯一性的限制 索引本身可以起到约束的作用,比如唯一索引.主键索引都是可以起到唯一性约束的,因此在我们的数据表中,如果某个字段是唯一的,就可以直接创建唯一性索引,或者主键 ...

  7. sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)

    一.一些常见的SQL实践 (1)负向条件查询不能使用索引 select * from order where status!=0 and stauts!=1 not in/not exists都不是好 ...

  8. 数据库创建索引的原则

    数据库建立索引的原则 铁律一:天下没有免费的午餐,使用索引是需要付出代价的 索引的优点有目共睹,但是,却很少有人关心过采用索引所需要付出的成本.若数据库管理员能够对索引所需要付出的代价有一个充分的认识 ...

  9. 索引语法——创建索引 || 查看索引 || 删除索引 || ALTER命令 索引设计原则

    索引语法 索引在创建表的时候,可以同时创建,也可以随时增加新的索引. 准备环境: 创建索引 查看索引 删除索引 ALTER命令 索引设计原则 索引的设计可以遵循一些已有的原则,创建索引的时候请尽量考虑 ...

  10. MySQL优化(二):索引的类型、匹配原则、创建原则

    目录 索引的优缺点 索引类型 聚簇索引(主键索引) 非聚簇索引(二级索引.辅助索引) 索引匹配的原则 最左匹配原则 无法使用索引的场景 索引创建的原则 使不使用索引的依据到底是什么? 参考 索引的优缺 ...

最新文章

  1. openStack调试
  2. java中单例实现常用的方式_Java单例的常见形式
  3. unity球体添加光源_Unity渲染路径——光源种类
  4. Hive mapreduce SQL实现原理——SQL最终分解为MR任务,而group by在MR里和单词统计MR没有区别了...
  5. 电脑任务组层叠窗口设置方法
  6. python写魔兽世界脚本_用python bat写软件安装脚本 + HM NIS Edit自动生成软件安装脚本...
  7. python的rsa公钥解密方法
  8. 《程序员修炼之道》笔记(八)
  9. PWN-PRACTICE-CTFSHOW-3
  10. [linux]获取当前文件所在目录的函数
  11. React(2)之——React组件化
  12. 加速器instagram_“类似Instagram过滤器”标记肿瘤图像中的分子细节
  13. php连接打印机代码,PHP连接打印机
  14. python模拟鼠标点击和键盘输入的操作
  15. android P 锁屏初探 ——3 power键锁屏流程
  16. 排错的时候不要“想当然”
  17. (三)SGE 部署 SGE
  18. Aqara? 华为?智汀?要真的实现万物互联了吗?
  19. 降噪蓝牙耳机评测排行榜最新,综合表现好的降噪蓝牙耳机分享
  20. 短视频拍摄技巧分享,巧用转场提升高级感,拥有自己的风格很重要

热门文章

  1. OAuth 2和JWT - 如何设计安全的API?
  2. 踩过的坑 vertical-alignline-height
  3. RobotFramework自动化测试框架-移动手机自动化测试Clear Text关键字的使用
  4. STM32F4XX高效驱动篇2 I2C
  5. Java开发笔记(一百二十九)Swing的输入框
  6. Linux设备驱动(转)
  7. Opengl es2.0 学习笔记(十)VBO、IBO和FBO
  8. 济南清北学堂游记 Day 2.
  9. window无法启动windows Firewall
  10. UVA - 10129 Play on Words(欧拉回路)