【含详细注解】
连接和基本查询在之前的文章中已经写到,这里就直接演示查询语句。
代码:
{
"query":{
"bool":{
//must类似mysql的and查询,具体的and的字段用数组包起来,具体的查询方式如“like”、“between”,“=”都在数组中完成组装,如下:
"must":[
//这里range表示范围查询,类似between
{
"range":{
//createDate表示字段名,这里为时间的意思
"createDate":{
//这里是时间的时间戳格式,且精确到毫秒,具体值以存储时的值为准,gt为大于,gte为大于等于,lt为小于,lte为小于等于,其它表达式请参考官方文档
"gt":1633017600000,
"lt":1635695999000
}
}
},
//term表示mysql的“=”
{
"term":{
//字段名和要查询的值
"statFunc":"cardroomstat"
}
},
//以下类似mysql的like查询,由于es可能会分词(取决于你的引擎配置)所以需要拆分为单个字进行查询,但效率不高
{
"term":{
"gameName":"綦"
}
},
{
"term":{
"gameName":"江"
}
},
{
"term":{
"gameName":"麻"
}
},
{
"term":{
"gameName":"将"
}
}
]
}
},
"from":0,//这里类似mysql的limit x(对应from),y(对应size)
"size":10,
//这里类似mysql的order by
"sort":[
{
//排序字段和排序方式
"unixtime":"desc"
}
],
//这里为额外统计部分,它针对上方查询结果进行统计
"aggs":{
//统计结果的别名,例如总开销,订单总额等,自由根据场景命名
"totalCost":{
//统计方式,eg:聚合、平均、最大、最小等,其它请参考官方文档
"sum":{
//要统计的字段名和值
"field":"cardChange"
}
}
}
}