[备忘]在PHP中Elasticsearch原生方式“and“查询

【含详细注解】

连接和基本查询在之前的文章中已经写到,这里就直接演示查询语句。

代码:

{
    "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"
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_15941409/article/details/120722618