用法:

在索引模板中添加setting指定排序:

"settings" : {

"index" : {

"sort.field" : "enter_time",

"sort.order" : "desc"

}

}

也可以指定多级排序:

"settings" : {

"index" : {

"sort.field" : ["enter_time", "camera_id"],

"sort.order" : ["desc","asc"]

}

}

用来排序的字段有:允许doc_values的boolean, numeric, date 和 keyword类型
效率测试:
ES版本:6.3.2
总数据量:18,433,120
写数据时,history_fss_data_v1_2_sort_two和history_fss_data_v1_2_sort是按照enter_time 降序排序,history_fss_data_v1_2_sort_uuid是按照uuid降序排序。
查询测试时,图片比对之后按照enter_time 升序排序,结果如下:
不图片比对,只按时间过滤,查询测试如下:
查询示例:
  curl -XGET "10.45.157.35:9200/history_fss_data_v1_2_sort/_search" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool": {"filter": {"range": {"enter_time":{"gte":"2018-09-20 00:00:00","lte":"2018-09-26 23:59:29","format":"yyyy-MM-dd HH:mm:ss","time_zone":"+08:00"}}
      }
    }
  },"from":0,"size":20,"sort":{"enter_time":"desc"}}'
 
测试结果如下:

由于上面的测试性能很差,怀疑是机器本身的性能问题,所以将此机器的es换为5.4.0版本,做如下测试:
索引名:czl_history_fss_data
数据量:18,217,302(61.3G)
(1)图片比对时,1800万数据量比对时耗时: 31347ms(23865ms,16454ms)
                12万数据量时比对耗时:13280ms(292ms)
(2)只做过滤查询的,相同的条件:耗时2398ms  过滤出120339条结果
在另一台性能较好的es版本为5.4.0的机器上做相同的测试:
索引名:write_history_ly_compare35
数据量:18025200(61.5G)
(1)图片比对时,1800万数据量比对时耗时: 8778ms
                12万数据量时比对耗时:7169ms
(2)只做过滤查询的,相同的条件:耗时只有164ms  过滤出122612条结果

结论:

1、图片比对时,结果排序测试
经测试,图片比对时,查询结果按照时间升序、降序排序或者按照相似度排序,耗时没有区别
2、分片数测试:
5.4版本的测试中,把索引的分片数适当调大,可以加快检索,但6.3版本的测试,分片调大,(15个分片与5个分片相比)性能反而下降很多,在测的分片个数为15、13、12、5、3时,5个分片的最快(不知道为什么?)

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可以提高性能,但经过测试,加不加此参数,查询耗时基本没有什么区别。

上面是针对应用的测试,仅供参考。

转载于:https://www.cnblogs.com/zling/p/10395468.html

ES6.3 index Sorting测试相关推荐

  1. express下使用ES6 - dtdxrk - 博客园

    express下使用ES6 1 2 3 4 5 6 7 8 9 //环境切换配置 package.json scripts:{ "service": "NODE_ENV= ...

  2. karma如何与测试框架合作2之webpack

    前文中,我们探讨了karma的工作的一些基本过程.但是,我并没有提及es6相关的内容, 本文来填这个坑. 抛出疑问 在现有的karma + webpack项目里,我们经常看到这样的配置,以vue-we ...

  3. express下使用ES6

    //环境切换配置 package.json scripts:{ "service": "NODE_ENV=production PORT=3000 npm start&q ...

  4. 老树新芽,在ES6下使用Express

    要让Express在ES6下跑起来就不得不用转码器Babel了.首先新建一个在某目录下新建一个项目.然后跳转到这个目录下开始下面的操作. 简单走起 安装babel-cli $ npm install ...

  5. ES6(一)ES6的开发环境搭建(es6转码为es5)

    写在最前面 往后陆续更新EXMA script 6的文章,都是之前工作的积累和网上搜索总结后自己再重新操手一遍,为了以后工作的需要,有理解的不到位的地方请小伙伴多多指正,共同进步! es6的优点(题外 ...

  6. apache修改最大连接并用ab网站压力测试

    apache修改最大连接并用ab网站压力测试 apache 2.2,使用默认配置,默认最大连接数是150 1.首先在httpd.conf中加载httpd-mpm.conf配置(去掉前面的注释): # ...

  7. centos7 apache2.4 测试

    物理环境 VPC,64C,8G,SSD 安装环境 centos7 apache2.4 php5.4 均使用YUM安装. 默认配置. 创建phpinfo echo "<?php phpi ...

  8. jest java_✅使用jest进行测试驱动开发

    前言 本文将使用jest进行测试驱动开发的示例,源码在github.重点说明在开发中引入单元测试后开发过程,以及测试先行的开发思路. 本文的重点是过程以及思维方法,框架以及用法不是重点. 本文使用的编 ...

  9. 测试驱动开发_?使用jest进行测试驱动开发

    前言 本文将使用jest进行测试驱动开发的示例,源码在github.重点说明在开发中引入单元测试后开发过程,以及测试先行的开发思路. 本文的重点是过程以及思维方法,框架以及用法不是重点. 本文使用的编 ...

  10. React 16 Jest ES6 Class Mocks(使用ES6语法类的模拟) 实例三、四

    转载地址 React 16 Jest ES6 Class Mocks(使用ES6语法类的模拟) 实例三.四 项目初始化 git clone https://github.com/durban89/we ...

最新文章

  1. Keras创始人:过去6个月,深度学习岗位已崩溃
  2. 全球及中国生物医药产业供给需求前景与运营风险分析报告2022版
  3. 教 Chatbot 生成更有营养的对话
  4. Django之orm补充
  5. 小小的 API 如何创造出 3.5 亿美元的价值?
  6. [RMAN]控制文件的恢复
  7. php amp 26472,汉字与UNICODE的转换 通过文件操作
  8. Linux大棚命令记录
  9. MyBatis缓存介绍
  10. matlab max函数 最大值好几个,matlab中的最大值和最小值
  11. Python数据挖掘——文本分析
  12. keep-alive用法
  13. python爬去新浪微博_Python爬虫爬取新浪微博内容示例【基于代理IP】
  14. wps如何快速小计求和
  15. 关于芯片之争,你需要知道这些本质
  16. 单目标多目标优化算法的测试函数与解
  17. C#中ref和out关键字的应用以及区别。
  18. 天使与海豚的爱情故事
  19. 开发APP帮用户虚拟定位打卡!创始人二审改判四年
  20. 使用思科n9kv注意事项

热门文章

  1. pythonATM,购物车项目实战8--通用函数的使用lib/common
  2. 帆软 动态改变填报数据库表;数据分析亦可用此方法
  3. python实现异步的原理_一篇文章理解Python异步编程的基本原理
  4. 第二章 生成、打包、部署和管理应用程序及类型
  5. 谷歌:光靠软件修复不能完全防御“幽灵”漏洞
  6. 哈尔滨举办冰雪动漫节 coser演绎《王者荣耀》英雄
  7. 未能写入输出文件拒绝访问
  8. rabbitmq-web-stomp 优化过程
  9. WPF入门教程系列二十——ListView示例(二)
  10. 【转】php json_encode中文为空的解决办法