ES6.3 index Sorting测试
用法:
在索引模板中添加setting指定排序:
"settings" : {
"index" : {
"sort.field" : "enter_time",
"sort.order" : "desc"
}
}
也可以指定多级排序:
"settings" : {
"index" : {
"sort.field" : ["enter_time", "camera_id"],
"sort.order" : ["desc","asc"]
}
}
查询测试时,图片比对之后按照enter_time 升序排序,结果如下:
数据量:18,217,302(61.3G)
(1)图片比对时,1800万数据量比对时耗时: 31347ms(23865ms,16454ms)
12万数据量时比对耗时:13280ms(292ms)
(2)只做过滤查询的,相同的条件:耗时2398ms 过滤出120339条结果
数据量:18025200(61.5G)
(1)图片比对时,1800万数据量比对时耗时: 8778ms
12万数据量时比对耗时:7169ms
(2)只做过滤查询的,相同的条件:耗时只有164ms 过滤出122612条结果
结论:
经测试,图片比对时,查询结果按照时间升序、降序排序或者按照相似度排序,耗时没有区别
3、磁盘占用空间测试:
索引时使用时间排序可节省大量磁盘空间(但用uuid排序并没有节省磁盘空间,为什么?)
4、index sorting 测试
图片比对查询时,在1800万多的数据中只搜索一段时间的数据(12万多),同样5个分片,按照时间排序的索引耗时1782ms,没有指定排序的索引耗时16267ms,按照uuid排序的索引耗时21031ms
5、过滤查询测试
不图片比对,只有时间过滤查询时,在1800万多的数据中只搜索一段时间的数据(12万多),同样5个分片,对结果按照时间排序时,按照时间排序的索引耗时2031ms,没有指定排序的索引耗时2436ms,按照uuid排序的索引耗时3094ms;对结果按照uuid排序时,按照时间排序的索引耗时3586ms,没有指定排序的索引耗时3863ms,按照uuid排序的索引耗时2525ms。这里可以看出指定排序后,按照相同的方式查询时,性能更好。如果按时间排序,当取其中一个时间段查询时,性能有大幅度提升,如果查询全部的数据,性能提升不明显。
6、track_total_hits参数测试:
官网上讲,当不需要结果总数(total)时,使用"track_total_hits": false可以提高性能,但经过测试,加不加此参数,查询耗时基本没有什么区别。
上面是针对应用的测试,仅供参考。