亲,只收二进制

elasticsearch关于index和type如何设计比较合理

Elasticsearch | 作者 linyongzhi | 发布于2016年08月26日 | 阅读数:15793

目前有20多种数据类型(a1,a2,a3...),每种数据类型里面有维度值和度量值,其中维度值有一个到多个不等,包含url这种长的字段值,包含数据时间字段;
查询要求是:查询一种数据类型(比如a1)一个月时间长度(最大时间长度为某个月),查询条件灵活(其中的维度值),查询结果需要对维度进行聚合分组,然后需要对度量值进行sum等聚合操作。
每天数据量比较大,而且其中更新比较频繁,如何合理的设计index和type使得查询和入库性能能够较好。
已邀请:

medcl - 今晚打老虎。

赞同来自: martindu

如果是20多种数据类型,每种类型都有维度和度量,那么其实可以设计成一种类型,用字段的具体值来区分,而不是用不同的field来区分,如:{type:a1, dimension:{key:date,value:2014-1-1,key:price,value:12.0}}, 
不过换句话来说,20多个类型其实不算多,你完全可以自由展开按对象的方式来做,beats里面很多监控的对象其实就是直接存的json对象,目前对es的影响比较小了,入库性能主要看index的shard的分片多少和字段的分词,当然还有一些其他的参数可以优化,另外更新频繁的数据是不是可以单独放索引里面呢?

linyongzhi

赞同来自:

每种数据类型中有三个字段是一样,比如频道,区域,时间,如何区分查询数据类型,是加上数据类型索引么?其中频道和时间是先作为查询条件(也会增加其他维度作为查询条件),然后再进行度量值得聚合。如何设计index和type比较合理?

martindu - 搜披露创始人

赞同来自:

查询数据的时候是从查询日起算一个月还是查询日的当月呢?如果是后者的话可以考虑每个月建一个索引。

要回复问题请先登录注册