美文网首页
使用ES查询语句须知

使用ES查询语句须知

作者: 转身一世铅华尽 | 来源:发表于2020-01-19 14:09 被阅读0次

    查询样例

    {"query": { 
      "bool": {
        "must": [{
            "query_string": {
                "default_field": "s_attack_type",
                "query": " *XXX* "
            }
        }],
        "should": [],
        "must_not": [],
        "filter": [{
            "range": {
                "l_last_ts": {
                    "gte": 1579086000000,
                    "lt": 1579172400000
                }
            }
        }, {
            "term": {
                "s_appId": "5308e20b"
            }
        }, {
            "term": {
                "s_app_type": "ios"
            }
        }, {
            "exists": {
                "field": "s_attack_type"
            }
        }]
    }
    }
    }
    

    这条语句代表这利用Kibana从ES中查询,查询条件以 query标签开始,以bool查询形式插入条件,其中可以插入条件
    must , must_not , should , should_not , filter等,must , must_not , should , should_not , 这些是查询条件是以单独一条的形式存在的,就是说,如果使用,must,则must这个语句块总只放一个单独的条件,在filter中,这个语句块中可以放多个条件,如 range ,
    term , exists等,range 表示用来查询时间区间内的数据,一个term相当于一个条件查询,多个term 则是相当于 条件 and 条件
    exists则是代表,ES索引中必须存在这个key。
    上述语句相当于下列 java 代码:

     QueryBuilder queryBuilder  = QueryBuilders.boolQuery().
                        filter(QueryBuilders.rangeQuery(EsQueryConstant.L_LAST_TS).gte(1579086000000).lt(1579172400000)).
                        filter(QueryBuilders.termQuery("s_appId", appId)).
                        filter(QueryBuilders.termQuery("s_app_type", "ios")).
                        filter(QueryBuilders.existQuery("s_attack_type")).
                        must(QueryBuilders.stringQuery("s_attack_type", "*" + "XXX" + "*"));
    

    ES的查询语句必须满足JSON格式
    其余的如 agg 等内容,下次再写吧

    相关文章

      网友评论

          本文标题:使用ES查询语句须知

          本文链接:https://www.haomeiwen.com/subject/sryrzctx.html