文章目录

  • 情景
  • 查询方法
    • 通过命令实现范围查询
    • 通过 API 实现范围查询

情景

在使用 Elasticsearch 的时候,我们可能会遇到需要以范围为条件查询索引数据的需求。有两种方法可以实现我们的需求:

  • 第一种:在服务器或者终端,使用命令来查询索引数据;
  • 第二种:编写程序,通过 Elasticsearch 的 API 来查询索引数据。

接下来,我们就以时间范围为例,详述这两种查询索引数据的方法。

查询方法

通过命令实现范围查询

在 Elasticsearch 中,想要通过命令实现范围查询,需要使用range关键字,命令示例为:

curl -X GET "localhost:9200/monitor_indices_name-*/_search?pretty" -H 'Content-Type: application/json' -d'
{"query": {"range" : {"time" : {"gte" : "2019-04-05T02:37:48","lt" :  "2019-04-05T07:57:48"}}}
}
'

  • 标注 1:主节点 IP;
  • 标注 2:索引名称,其中*表示模糊匹配;
  • 标注 3:待查范围字段,根据查询的需求进行替换;
  • 标注 4:范围条件,有四种比较符号,分别为
    • gtgreater than的缩写,表示>大于
    • ltless than的缩写,表示<小于
    • gtegreater than or equal to的缩写,表示>=大于或等于
    • lteless than or equal to的缩写,表示<=小于或等于
  • 标注 5:查询结果,total表示查询结果的总数

通过 API 实现范围查询

在这里,我们以 Java API 为例,进行演示。代码示例为:

public class ElasticsearchRangeQuery {public void esRangeQuery(String masterNodeIp, int port) {// 集群客户端配置Settings settings = Settings.builder().put("client.transport.sniff", false).put("cluster.name", "testRangeQuery").put("client.transport.ping_timeout", 60, TimeUnit.SECONDS).build();TransportClient client = new PreBuiltTransportClient(settings);try {// 添加传输端口号和地址TransportAddress transportAddress = new TransportAddress(new InetSocketAddress(masterNodeIp, port));client.addTransportAddress(transportAddress);// 初始化索引和类型String index = "monitor_indices_name-*";String type = "monitor";// 多条件查询SearchResponse searchResponse = client.prepareSearch(index).setTypes(type).setQuery(QueryBuilders.boolQuery().must(QueryBuilders.matchPhraseQuery("testField", "testFieldValue")).must(QueryBuilders.rangeQuery("time").from("2019-04-05T02:37:48").to("2019-04-05T07:57:48"))).setExplain(true).setSize(50).execute().actionGet();SearchHits searchHits = searchResponse.getHits();if (searchHits.getTotalHits() > 0) {SearchHit[] hits = searchHits.getHits();// 循环打印结果数据for (SearchHit hit : hits) {System.out.println(hit.getSourceAsString());}}} catch (Throwable e) {e.getStackTrace();}}
}

如上述代码所示,其中testRangeQuery为 Elasticsearch 集群的名称。

  • rangeQuery,为范围查询。
  • matchPhraseQuery,为文本查询;

特别地,无论是通过命令查询,还是通过 API 查询,默认都是展示前 10 条记录,我们可以通过设置size来调整查询结果的数量。

  • 命令查询,直接在查询命令中新增"size": 50语句即可;
  • API 查询,直接调用setSize(50)方法即可。

如上述所示,调整命中结果返回前 50 条记录。

最后,还有一点需要我们特别注意,那就是 Elasticsearch 索引中存储的时间格式。如果两者不一致,我们需要在查询前进行转换!

好了,本篇文章到这里就要结束了,希望能够对大家有所帮助。

详述 Elasticsearch 通过范围条件查询索引数据的方法相关推荐

  1. php mysql or_mysql条件查询and or使用方法及优先级实例分析

    本文实例讲述了mysql条件查询and or使用方法及优先级.分享给大家供大家参考,具体如下: mysql and与or介绍 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来. 使 ...

  2. elasticsearch系列-子条件查询

    子条件查询 子条件查询又称为叶子条件查询,在特定字段中查询所指定值.在子查询中又分为Query Context和FilterContext. QueryContext 在QueryContext查询过 ...

  3. 【.Net】C# 将Access中时间段条件查询的数据添加到ListView中

    一.让ListView控件显示表头的方法 在窗体中添加ListView 空间,其属性中设置:View属性设置为:Detail,Columns集合中添加表头中的文字. 二.利用代码给ListView添加 ...

  4. mongodb java 多条件查询_MongoDB_Java连接mongo 使用Java多条件查询mongo数据

    在mongo shell中的查询语句是这样的.. db.user.find({"age":{"$gt":5,"$lt":14}})我们用Ja ...

  5. 【ElasticSearch】在 ELASTICSEARCH 中使用管道重新索引数据 pipeline

    1.概述 翻译:https://cinhtau.net/2017/05/01/reindex-data-with-pipeline/ 数据并不总是干净的.根据它的生成方式,数字可能会在 JSON 正文 ...

  6. json数据条件查询,json数据sql查询中文乱码

    json 解析  分页  条件查询 从数据库中查询出来的json数据乱码可以使用 json_extract(json字段,'$') json字段 这个是json数据的条件查询 <sql id=& ...

  7. mysql 条件查询 导出数据_mysql按查询条件导出指定数据方法

    本文章介绍了用mysql into outfile命令来导入指定表中指定数据的方法. 按条件导出mysql表的数据: 代码如下 theyestoday=`date -d "-1 day&qu ...

  8. 多条件查询以及数据筛选

    开发工具与关键技术: VisualStudio 2015 mvc 作者:杨泽平 撰写时间:2019.7.5 多条件查询,在mvc中是常用的,一般涉及到数据的都会用到条件查询,这要也叫做组合查询,这个好 ...

  9. 自定义条件查询_数据查询不止有vlookup函数,自定义zlookup函数查询操作更高效...

    Excel数据查询,相信大家首先会想到vlookup函数.毋庸置疑vlookup函数在Excel数据查询中作用是非常的强大.但是它也有一些不能实现的数据查询. 如上图所示,我们需要根据人员的出现次数, ...

最新文章

  1. python获取路径下所有图片:
  2. 采用 opencv surf 算子进行特征匹配
  3. 设计模式--六大原则
  4. 使用iOS手势UIGestureRecognizer
  5. PHP复杂度,php 常用算法和时间复杂度
  6. 9-2:C++多态之纯虚函数和抽象类以及接口继承和实现继承
  7. C++/C--lambda表达式与函数对象【转载】
  8. java动态数组的实现的_基于Java的动态数组分析与实现
  9. android 黄金颜色,一加手机3有哪几种颜色 一加3 薄荷金与冰川灰哪种颜色好看?...
  10. 知识点:计算机网络的 89 个核心概念
  11. day53_电力系统_ztree动态生成权限控制
  12. dell服务器经常自动关机,戴尔电脑老是自动关机的解决方法
  13. 次世代游戏建模制作工作流程
  14. 520到来!教你如何用代码向心仪的学妹表白,获取他的芳心!
  15. 7-1 查找书籍 (20 分)给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息
  16. Dubbo实战(一)快速入门
  17. Electron加载网页失败,监听事件处理
  18. java思想编程kindle版电子书下载,讲的太清楚了
  19. 【项目实战】Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战
  20. 微软CEO史蒂夫·鲍尔默(Steve Ballmer)在12个月内退休

热门文章

  1. 计算机毕业设计Java高考填报信息系统(源码+系统+mysql数据库+Lw文档)
  2. java计算机毕业设计健康食谱系统服务器端源码+mysql数据库+系统+lw文档+部署
  3. iMeta | Sangerbox: 交互式整合临床生信分析平台
  4. 融云IM iOS sdk 集成 一篇就够了
  5. 如何解决PDF页面大小不一致的情况?
  6. 计算机网络|时延、发送时延(传输时延)、传播时延、处理时延、排队时延、时延带宽积
  7. bcompiler php,PHP bcompiler 函数
  8. MATLAB结构体写入excel中
  9. 某通信设备集团公司日常巡检应用案例
  10. 生成dimen脚本文件