常用mysql语句转elasticsearch查询语句

本文深入探讨了Elasticsearch中的多种查询方式,包括布尔查询、通配符查询、区间查询等,以及如何进行数据汇总和分组统计。通过具体示例,展示了如何使用should、must和must_not条件进行复杂查询,利用wildcard进行模糊匹配,实现range区间筛选,并介绍了如何通过aggs结构对数据进行聚合分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 多个查询条件 bool(must、should、must_not)
select * from index_person where name = 'jeck' or sex = 'male' order by age,sex
{
	"query":{
		"bool":{
			"should":{
				{"match":{"name": "jeck"}},
				{"match": {"sex": "male"}},
			}
		}		
	},
    "sort":[{"age":{"order":"asc"},
			{"sex":{"order":"desc"}}]
}
  1. like查询 wildcard
select * from index_person where name like '%jeck%'

{
	"query":{
		"bool":{
			"must":{
				"wildcard":{
					"name":"*jeck*"
				}
			}
		}		
	}
}
  1. 区间查询 range
select * from index_person where name = 'jeck' and sex = 'male' and (age<30 and age>40)

{
 "query": {
    "bool": {
		"must": [
			{"match":{"name": "jeck"}},
			{"match": {"sex": "male"}},
			{"range" : {"age" : {"gt" : 40,"lt":30}}}
		]
    }
  }
}
  1. 根据bucket提取汇总数,如果对汇总数继续分组,可以在group_by_sex后继续添加aggs结构
select count(sex) from index_person where age>30 group by sex;

{
  "size":10,
  "query":{
    "bool":{
      "must":[{"range" : {"age" : {"gt" : 30}}}]
    }
  },
  "aggs":{
    "group_by_sex":{
      "terms":{
        "field":"sex"
      }
    }
  }
}
  1. 分组调用内置函数,(avg,sum)
select average(age) from index_person  group by sex 
{
  "size":10,
  "aggs":{
    "avg_by_age":{
      "avg":{
        "field":"sex"
      }
    }
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值