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

ES常见查询总结

目录

  • 1:查询总数
  • 2:查询所有数据
  • 3:查询指定条数
  • 4:根据ID查询
  • 5:一个查询字符串搜索
  • 6:match搜索
  • 7:term搜索
  • 8:bool搜索
  • 9:must多条件匹配查询
  • 10:Should满足一个条件查询
  • 11: must_not必须不匹配查询
  • 12:多个字段查询内容
  • 13:一个字段查询多个内容
  • 14:通配符和正则匹配
  • 15:前缀查询
  • 16:短语匹配
  • 17:范围查询
  • 18:字段存在查询

1:查询总数

GET demo_person/_count
{ "query": {"match_all": {}}
}

上述用sql表示:

SELECT COUNT(*) FROM demo_person

2:查询所有数据

GET demo_person/_search
{  "query": {"match_all": {}}
}

上述用sql表示:

SELECT * FROM demo_person

3:查询指定条数

GET demo_person/_search
{  "size": 20, "query": {"match_all": {}}
}

上述用sql表示:

SELECT * FROM demo_person LIMIT 20

4:根据ID查询

GET /demo_person/_doc/1?pretty

上述用sql表示:

SELECT * FROM demo_person WHERE _id = '1'

5:一个查询字符串搜索

GET /demo_person/_search?q=last_name:Smith

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Smith'

6:match搜索

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段包含 “Smith” 的文档,
特点先分词,再拿词去匹配倒排索引

GET /demo_person/_search
{"query" : {"match" : {"last_name" : "Smith"}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name ='Smith'

7:term搜索

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段精确匹配值为 “Smith” 的文档。term:不分词直接匹配词条

GET /demo_person/_search
{"query": {"term": {"last_name": {"value": "Smith"}}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Smith'

8:bool搜索

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段包含 “Smith” 且 age 大于等于 30 的文档。
must: 完全匹配条件 相当于sql中的and
should: 至少满足一个条件 相当于sql中的 or
must_not: 文档必须不匹配条件 相当于sql中的!=

GET /demo_person/_search
{"query": {"bool": {"must": [{"match": {"last_name": "Smith"}}],"filter": [{"range": {"age": {"gte": 30}}}]}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Smith' AND age >= 30

9:must多条件匹配查询

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段包含 “Smith” 且 age 等于 32 的文档。

GET /demo_person/_search
{"query": {"bool": {"must": [{"match": {"last_name": "Smith"}},{"match": {"age": 32}}]}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Smith' AND age = 32

10:Should满足一个条件查询

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段包含 “Fir” 或 age 等于 32 的文档。

GET /demo_person/_search
{"query": {"bool": {"should": [{"match": {"last_name": "Fir"}},{"match": {"age": 32}}]}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name = 'Fir' OR age = 32

11: must_not必须不匹配查询

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 字段不包含 “Fir” 且 age 不等于 32 的文档

GET /demo_person/_search
{"query": {"bool": {"must_not": [{"match": {"last_name": "Fir"}},{"match": {"age": 32}}]}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name != 'Fir' AND age != 32

12:多个字段查询内容

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 last_name 和 about 字段包含 “collect” 或 “rock” 的文档。

GET /demo_person/_search
{"query": {"multi_match": {"query": "collect rock","fields": ["last_name","about"]}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name LIKE '%collect%' OR about LIKE '%collect%' OR last_name LIKE '%rock%' OR about LIKE '%rock%'

13:一个字段查询多个内容

GET /demo_person/_search
{"query": {"terms": {"about": ["rock","hehe"	]}}	
}

上述用sql表示:

SELECT * FROM demo_person WHERE about IN ('rock', 'hehe')

14:通配符和正则匹配

GET /demo_person/_search
{"query": {"bool": {"filter": [{"wildcard":{"last_name":"*mi*"}}]}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name LIKE '%mi%'

15:前缀查询

GET /demo_person/_search
{"query": {"prefix": {"last_name": {"value": "Smi"}}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE last_name LIKE 'Smi%'

16:短语匹配

这是一个 Elasticsearch 查询语句,用于在索引为 demo_person 中查询 about 字段包含短语 “rock climbing” 的文档。

GET /demo_person/_search
{"query" : {"match_phrase" : {"about" : "rock climbing"}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE about LIKE '%rock climbing%'

17:范围查询

GET demo_person/_search
{  "query": {"range": {"age": {"gte": 30,"lt": 35}}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE age >= 30 AND age < 35

18:字段存在查询

GET /demo_person/_search
{"query": {"exists": {"field": "age"}}
}

上述用sql表示:

SELECT * FROM demo_person WHERE age IS NOT NULL
http://www.lryc.cn/news/262393.html

相关文章:

  • Spring Boot Docker Compose 支持中文文档
  • 智慧城市/一网统管建设:人员危险行为检测算法,为城市安全保驾护航
  • C语言:求和1+1/2-1/3+1/4-1/5+……-1/99+1/100
  • 学习什么知识不会过时
  • C# WPF上位机开发(ExtendedWPFToolkit扩展包使用)
  • 【IOS开发】传感器 SensorKit
  • 【C++】封装:练习案例-点和圆的关系
  • 【vue】正则表达式限制input的输入:
  • 异步导入中使用SecurityUtils.getSubject().getPrincipal()获取LoginUser对象导致的缓存删除失败问题
  • 大数据机器学习深度解读决策树算法:技术全解与案例实战
  • 【开源Mongdb驱动】SpringBoot+Mybatis+Mongdb融合使用教程
  • freeRTOS使用
  • 基于vue的线上点餐系统论文
  • 【Windows】windows11右键默认显示更多选项的办法
  • 推荐使用过很好用的api,含免费次数
  • QT最大线程并发
  • 在金属/绝缘体/p-GaN栅极高电子迁移率晶体管中同时实现大的栅压摆幅和增强的阈值电压稳定性
  • Redis第1讲——入门简介
  • 数据科学知识库
  • 设计模式——责任链模式(行为模式)
  • 【谭浩强C语言:前八章编程题(多解)】
  • 程序人生15年人生感悟
  • React与AJAX
  • C++ STL泛型算法
  • 使用OpenSSL生成PKCS#12格式的证书和私钥
  • 超详细 | 哈里斯鹰优化算法原理、实现及其改进与利用(Matlab/Python)
  • git 切换远程地址分支 推送到指定地址分支 版本回退
  • YOLOv3-YOLOv8的一些总结
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)控件的部分公共属性和事件
  • 最新同步云盘推荐:实现轻松管理与便捷同步的理想选择