文章目录
- 前言
- ?搜索所有文档
- ?根据指定字段倒序排列
- ?查询返回指定字段
- ?范围查询(range)
- ?前缀查询(prefix)
- ?组合查询(bool)
- ?高亮查询(term、highlight)
- ? terms 查询
- ?多字段查询(multi_match)
文章图片
前言
- 本文为es常见DSL搜索入门帖子
- 开始之前先贴个对应关系,方便各位理解
- 在es7+的版本中,是没有类型的概念的,所以,添加数据直接在索引中添加;
文章图片
localhost:9200/{索引}/_search
,为了编写方便些,在下面的例子中会直接写请求体;?搜索所有文档
{
"query": {
"match_all": {}
},
"size": 1 // size关键词为返回数据条数,不填写默认为10条
}
?根据指定字段倒序排列
{
"query": {
"match_all": {}
},
"sort": [
{
"patient_age": {
"order": "desc" // 根据用户年龄倒序排列
}
}
],
"size": 10, // size 与 from搭配起到分页的作用
"from": 1
}
?查询返回指定字段
{
"query": {
"match_all": {}
},
"_source": ["bill_no", "patient_age"], // 只返回订单号和用户年龄
"sort": [
{
"patient_age": {
"order": "desc"
}
}
],
"size": 10,
"from": 1
}
?范围查询(range)
{
"query": {
"range": {
"patient_age": { // 查询年龄大于1岁 小于10岁的用户
"gte": 1,
"lte": 10
}
}
}
}
?前缀查询(prefix)
{
"query": {
"prefix": {
"patient_name": {
"value": "李" // 查询姓李的用户
}
}
}
}
?组合查询(bool)
- bool 关键字: 用来组合多个条件实现复杂查询表达式
- ? must: 相当于 &&
- should: 相当于 ||
- must_not: 相当于 !=
- 查询用户年龄(
patient_age
)在0-18岁之间 - 且不姓李的用户信息
- 并且按照用户年龄字段倒序排列
- 并且返回指定字段的用户信息
{
"query": {
"bool": {
"must": [
{
"range": {
"patient_age": {
"gte": 0,
"lte": 18
}
}
}
],
"must_not": [
{
"prefix": {
"patient_name": {
"value": "李"
}
}
}
]
}
},
"sort": [
{
"patient_age": {
"order": "desc"
}
}
],
"_source": [
"bill_no",
"patient_name",
"patient_age"
]
}
?高亮查询(term、highlight)
term
查询被用于精确值匹配,这些精确值可能是数字、时间、布尔或者那些 not_analyzed 的字符串;
{
"query": {
"term": {
"patient_name": {
"value": "李"
}
}
},
"highlight": {
"fields": {
"*": {}
}
}
}
【Elasticsearch|【ElasticSearch】ElasticSearch常用查询api集合(一)】在返回值中,符合条件的数据会被highlight标签包裹,并且有标签修饰,不过这个标签是可以通过es进行修改的;
"highlight": {
"patient_name": [
"李雪"
]
}
? terms 查询
- terms 查询和 term 查询一样,但它允许你指定多值进行匹配;
- 如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件
{
"query": {
"terms": {
"patient_name": [ // 查询患者名字中包含 赵 钱 孙字符的文档
"赵",
"钱",
"孙"
]
}
}
}
?多字段查询(multi_match)
{
"query": {
"multi_match": {
"query": "山东",
"fields": [
"patient_address", // 这里为检索的字段
"address"
]
}
}
}
推荐阅读
- python|Python数据可视化(利用colormap让你的图表与众不同)
- 想要精准营销,从学习搭建一套对的标签体系开始丨DTVision分析洞察篇
- java开发工具|Java 程序员开发常用的工具推荐
- 自动驾驶|自动驾驶争议不断,距离落地还有几道坎(|上云那些事)
- 分布式|美团P4级精心整理的微服务系统架构设计手册,值得一看!
- 大数据|Booking.com机器学习比赛
- 业界观点|Geoffrey Hinton(深度学习的下一个大事件)
- 大数据项目|【尚硅谷】电商数仓V4.0丨大数据数据仓库项目实战【学习记录】第二节
- Hive|数仓(五)(数据建模--ER模型/维度建模,概念模型/逻辑模型/ 物理模型)