问题描述:

在实际项目中,查询Top10数据的场景非常常见,比如查询票房前十的电影,销售榜前十的商品等。
那么在ES中如何查询Top10的数据呢?

问题分析:

一般Top10问题,都可以转化成先排序再取排行前10的问题,那么实现就简单了。

数据准备

创建索引book,获取价格最贵的3本书的信息。

PUT book
{"mappings": {"properties": {"name": {"type": "text", "analyzer": "ik_smart"},"price": {"type": "double"}}}
}
PUT /book/_bulk
{ "create": { } }
{"name": "java编程思想","price": 100}
{ "create": { } }
{"name": "ES实战","price": 120}
{ "create": { } }
{"name": "ES从入门到精通","price": 60}
{ "create": { } }
{"name": "微服务架构 设计模式","price": 160}
{ "create": { } }
{"name": "架构真经","price": 90}
{ "create": { } }
{"name": "spring boot实战","price": 50}
{ "create": { } }
{"name": "高性能mysql","price": 80}

实现方案:

1、SQL查询

POST /_sql?format=txt
{"query": "SELECT * FROM book ORDER BY price DESC","fetch_size": 3
}POST /_sql?format=txt
{"query": "SELECT * FROM (SELECT * FROM book ORDER BY price DESC ) limit 3"
}

查询结果:

2、DSL查询

POST /_sql/translate
{"query": "SELECT * FROM book ORDER BY price DESC","fetch_size": 3
}

转化结果:

{"size" : 3,"_source" : {"includes" : ["name","price"],"excludes" : [ ]},"sort" : [{"price" : {"order" : "desc","missing" : "_first","unmapped_type" : "double"}}]
}

完整DSL语句:

POST /book/_search
{"size" : 3,"_source" : {"includes" : ["name","price"],"excludes" : [ ]},"sort" : [{"price" : {"order" : "desc","missing" : "_first","unmapped_type" : "double"}}]
}

ES中如何查询Top10数据相关推荐

  1. ES中SQL查询详解

    一.Elasticsearch SQL简介 Elasticsearch SQL 是一个 X-Pack 组件,它允许对 Elasticsearch 实时执行类似 SQL 的查询.无论是使用 REST 接 ...

  2. es中should查询使用注意

    今天在使用must,must_not,should的使用的时候,发现了以下博客 https://blog.csdn.net/qq_31748587/article/details/101449613 ...

  3. python去重复的数据_Python中mysql查询重复数据并删除重复数据

    #coding:utf-8 import mysql.connector mydb = mysql.connector.connect( host='localhost', user='root', ...

  4. Mysql数据库中查询重复数据和去重数据 , 删除重复数据的sql及分析

    数据库中有重复数据时,用到哪些sql语句? 建表: CREATE TABLE `user` (`id` bigint(255) NOT NULL AUTO_INCREMENT,`name` varch ...

  5. ElasticSearch搜索引擎结合Mysql数据库,查询mysql数据

    需要下载的东西 ElasticSearch--https://www.elastic.co/cn/downloads/elasticsearch Logstash(版本需要和ES对应)--https: ...

  6. SpringData ES中字段名和索引中的列名字不一致导致的无法查询数据的解决方法

    为什么80%的码农都做不了架构师?>>>    用SpringDataElasticsearch查询数据的时候可以将实体中的字段名与ES中mapping中field的名字起成一样的名 ...

  7. 基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率

    基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率 1.拉取logstash,kibana,es,mysql镜像 #命令 ...

  8. ES中实现分页查询数据并返回想要的字段

    在日志收集系统中,最近需要通过httpclient获取es中的日志信息,所以学习了一些es的查询语句方面的用法: 分页 分页的本质 分页的本质是从"大的数据集"中取出一部分.比如1 ...

  9. es查询大文本效率_es中terms查询速度能否优化

    es表结构如下:PUT demo/ { "mappings": { "demo": { "_all": { "enabled&qu ...

最新文章

  1. delphi char与string比较
  2. Spring-级联赋值
  3. 实时平台在趣头条的建设实践
  4. 特斯拉自动驾驶使用的技术_使用自回归预测特斯拉股价
  5. C 的Pair用法分类整理(精)
  6. java 静态变量 new_java中静态对象和普通变量在初始化静态变量的时候有什么区别??高手!!...
  7. python打包成exe导入文件_【转载】将python脚本打包成exe文件
  8. android 盒子刷 下载,一加5刷机盒子
  9. Java并发之ThreadLocal
  10. 前端核心技术必备知识库精华资源强力推荐
  11. Java Spring-事务管理
  12. 在C#中将字符串转换为字节数组
  13. VBA 函数 过程之间互相调用的技巧
  14. 啊哈C语言课后练习题
  15. cwrsync向linux免密同步,Cwrsync如何使用可以实现Linux与windows下的文件同步详解
  16. CF949D Curfew solution
  17. 数据结构与算法——先导篇
  18. Android MotionLayout As a Dancer
  19. 决战平安京选择正确的服务器,决战!平安京怎么预先选择自己的位置 匹配预选位流程攻略...
  20. 新兴实践_新兴文件系统简介

热门文章

  1. 读张鑫旭老师的《CSS世界》总结
  2. 7-5 统计英文字母和数字字符 (10 分)
  3. 【解决报错】java.sql.SQLException Access denied for user ‘root‘@‘localhost‘ (using password YES)
  4. SPI协议概括、SPI总线工作的四种方式和SPI接口时序
  5. linux uwsgi 非root,linux 安装uwsgi
  6. App Store/Google Play开发者如何收款?中国谷歌开发者收款方式总结
  7. IDEA导入lib目录下的jar包
  8. Vagrant安装centos/7虚拟机
  9. 网易云音乐api400 Bad Request
  10. 模糊理论相关学习(1)