当前位置: 首页 > news >正文

ES里面常用的查询语句有哪些?

【编程电子书大全】链接: https://pan.baidu.com/s/1yhPJ9LmS_z5TdgIgxs9NvQ?pwd=yyds > 提取码: yyds

Elasticsearch(ES)中常用的查询语句包括以下几类:

1. Match 查询

用于全文搜索,匹配指定字段中的文本。

GET /index_name/_search
{"query": {"match": {"field": "value"}}
}

2. Term 查询

用于精确匹配,不会进行分词。

GET /index_name/_search
{"query": {"term": {"field": "value"}}
}

3. Range 查询

用于范围查询,如日期、数字范围。

GET /index_name/_search
{"query": {"range": {"field": {"gte": "value1","lte": "value2"}}}
}

4. Bool 查询

用于组合多个查询条件,可以包含 mustshouldmust_notfilter 子句。

GET /index_name/_search
{"query": {"bool": {"must": [{ "match": { "field1": "value1" } }],"filter": [{ "term": { "field2": "value2" } }],"must_not": [{ "term": { "field3": "value3" } }],"should": [{ "match": { "field4": "value4" } }]}}
}

5. Match Phrase 查询

用于短语匹配,要求完全匹配短语中的词序。

GET /index_name/_search
{"query": {"match_phrase": {"field": "exact phrase"}}
}

6. Multi-Match 查询

在多个字段上进行匹配。

GET /index_name/_search
{"query": {"multi_match": {"query": "value","fields": ["field1", "field2"]}}
}

7. Wildcard 查询

用于通配符查询,支持 *? 通配符。

GET /index_name/_search
{"query": {"wildcard": {"field": "val*"}}
}

8. Exists 查询

用于检查文档中是否存在某个字段。

GET /index_name/_search
{"query": {"exists": {"field": "field_name"}}
}

9. Aggregation 查询

用于统计和聚合分析。

GET /index_name/_search
{"aggs": {"aggregation_name": {"terms": {"field": "field_name"}}}
}

这些查询语句涵盖了大多数常见的 Elasticsearch 查询需求,根据具体应用场景可以组合使用以实现复杂的查询逻辑。

其中Bool的四种子句的含义如下

在 Elasticsearch 中,bool 查询用于将多个查询子句组合在一起。它包含四种不同的子句,每种子句的作用和使用场景不同:

1. must

  • 作用:必须匹配的条件,类似于逻辑上的 AND。
  • 特性:文档必须满足 must 子句中的所有条件才能被返回。
  • 示例
    "must": [{ "match": { "field1": "value1" } },{ "term": { "field2": "value2" } }
    ]
    

2. should

  • 作用:可选匹配的条件,类似于逻辑上的 OR。
  • 特性:如果有一个或多个 should 子句,则文档满足其中任意一个条件即可被返回。如果没有 must 子句,至少一个 should 条件必须匹配才能返回文档。
  • 示例
    "should": [{ "match": { "field3": "value3" } },{ "term": { "field4": "value4" } }
    ]
    

3. must_not

  • 作用:必须不匹配的条件,类似于逻辑上的 NOT。
  • 特性:文档不能满足 must_not 子句中的任何一个条件,否则不会被返回。
  • 示例
    "must_not": [{ "match": { "field5": "value5" } },{ "term": { "field6": "value6" } }
    ]
    

4. filter

  • 作用:过滤条件,不影响评分。
  • 特性:文档必须满足 filter 子句中的所有条件,但这些条件不会影响文档的相关性评分,因此性能较高。
  • 示例
    "filter": [{ "term": { "field7": "value7" } },{ "range": { "field8": { "gte": 10, "lte": 20 } } }
    ]
    

综合示例

GET /index_name/_search
{"query": {"bool": {"must": [{ "match": { "title": "Elasticsearch" } }],"should": [{ "match": { "tags": "search" } },{ "match": { "tags": "analytics" } }],"must_not": [{ "term": { "status": "deprecated" } }],"filter": [{ "term": { "author": "john_doe" } },{ "range": { "publish_date": { "gte": "2020-01-01" } } }]}}
}

在这个例子中,查询的意思是:

  • 文档必须包含 title 字段匹配 “Elasticsearch”。
  • 文档可以包含 tags 字段匹配 “search” 或 “analytics”。
  • 文档不能包含 status 字段为 “deprecated”。
  • 文档必须包含 author 字段为 “john_doe” 且 publish_date 字段在 2020-01-01 之后。

通过这种方式,可以灵活组合不同的条件来构建复杂的查询逻辑。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Pytorch使用教学2-Tensor的维度
  • 探索Python的进度条神器:tqdm
  • 51单片机嵌入式开发:20、STC89C52R基于C51嵌入式点阵广告屏的设计
  • springcloud rocketmq 新增的消费者组从哪里开始消费
  • 【开发学习笔记】什么是Springboot?
  • 【AI大模型】Prompt 提示词工程使用详解
  • SSM学习9:SpringBoot简介、创建项目、配置文件、多环节配置
  • docker 构建 mongodb
  • 阿里服务器购买与java环境搭建 实践
  • kafka高性能的底层原理分析
  • 若依ruoyi+AI项目二次开发(智能售货机运营管理系统)
  • 0719_驱动1 arm裸机开发与linux驱动开发区别
  • centos7安装redis数据库步骤
  • 数据库编程中游标 连接 commit 字符集
  • 键盘是如何使用中断机制的?当打印一串字符到显示屏上时发生了什么???
  • SegmentFault for Android 3.0 发布
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • Android开源项目规范总结
  • Centos6.8 使用rpm安装mysql5.7
  • JavaScript设计模式系列一:工厂模式
  • jQuery(一)
  • JS变量作用域
  • magento2项目上线注意事项
  • Odoo domain写法及运用
  • Python学习笔记 字符串拼接
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • scala基础语法(二)
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Webpack入门之遇到的那些坑,系列示例Demo
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 从伪并行的 Python 多线程说起
  • 构建二叉树进行数值数组的去重及优化
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 记一次用 NodeJs 实现模拟登录的思路
  • 爬虫模拟登陆 SegmentFault
  • 前端之Sass/Scss实战笔记
  • 网页视频流m3u8/ts视频下载
  • 移动端解决方案学习记录
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • # include “ “ 和 # include < >两者的区别
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • $.ajax()
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (力扣)1314.矩阵区域和
  • (十六)串口UART
  • (一)WLAN定义和基本架构转
  • (转)负载均衡,回话保持,cookie
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .Net MVC + EF搭建学生管理系统
  • .net 获取某一天 在当月是 第几周 函数
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)