首页 > 编程知识 正文

esm语法,es2015语法

时间:2023-05-04 03:15:59 阅读:202707 作者:3407

ES

agge 聚合

terms 条款,项

对text类型的字段进行分组,必须加上keyword,不加keyword ---->1 对该字段进行fileddata=true 2 会对该字段进行分词

GET /event-fw*/_search { "aggs": {
"test": { "terms": {"field": "event_type.keyword"} } } ,"size": 0 }

先查询过滤再进行分组

GET /event-fw*/_search { "aggs":{ "test":{ "terms":{ "field":"event_type.keyword" } } }, "size":0, "query":{ "match":{ "app_name":"网页浏览(HTTP)" } } }

结构化查询

bool合并子句或者复合子句 当must must_not should 里面有多个参数值,里面变成数组

GET /event-fw*/_search { "query": { "bool": { "must": { "match": { "title": "quick" }}, "must_not": { "match": { "title": "lazy" }}, "should": [ { "match": { "title": "brown" }}, { "match": { "title": "dog" }} ] } } }

查询和过滤的本质区别

ES语法简介

term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed的字符串(未经分析的文本数据类型): { "term": { "date": "2014-09-01" }}复制代码

参考地址:es.xiaoleilu.com/054_Query_D…

es可以进行批量查询

先查找过滤再根据dst_ip 分组

时间在索引上过滤

GET /event-fw*/_search { "query": { "bool": { "must": { "match": { "event_name":"漏扫" }}, "must": { "match": { "src_ip":"10.2.6.30" }} } } ,"aggs": { "test": { "terms": { "field": "dst_ip", "size": 5 } } } }

先根据ip分组,在根据关键字进行过滤

简单搜索

DSL查询

复杂的搜索 filter query 的嵌套

全文搜索 match

短语匹配 match_phrase 对内容短语不进行拆分

聚合

直接聚合

查询过滤再聚合

聚合再统计

应对故障

主分片的数量在创建缩影是已经确定,也就是说你大概有多少数据

es查询语法

根据时间过滤再分组

SearchResponse table1 = ESConfig.client().prepareSearch("event-fw-*") .setQuery(QueryBuilders.rangeQuery("event_receive_time").from("0").to("1557471553437")) .addAggregation(AggregationBuilders.terms("src_ip").field("src_ip") .subAggregation(AggregationBuilders.sum("total_up").field("up_bit")) .subAggregation(AggregationBuilders.sum("total_total").field("total_bit")) .subAggregation(AggregationBuilders.sum("total_down").field("down_bit"))) .setSize(10) .execute().get();复制代码

es批量查询

MultiSearchRequestBuilder multiSearchRequestBuilder = ESConfig.client().prepareMultiSearch(); //创建查询条件 //查询tags:car SearchRequestBuilder carSearch = ESConfig.client().prepareSearch(INDEX_FW); carSearch.setQuery(QueryBuilders.matchQuery(FEILD_EVENT_NAME, ATTACK_FIVE)); multiSearchRequestBuilder.add(carSearch); //查询tags:male SearchRequestBuilder maleSearch = ESConfig.client().prepareSearch(INDEX_FW); maleSearch.setQuery(QueryBuilders.matchQuery(FEILD_EVENT_NAME,ATTACK_ONE)); multiSearchRequestBuilder.add(maleSearch); multiSearchRequestBuilder.execute().get();复制代码

关于这四个query的区别

9200和9300

es启动监听两个端口,9300和9200 9300端口是使用tcp客户端连接使用的端口; 9200端口是通过http协议连接es使用的端口;

转载于:https://juejin.im/post/5d2e71fef265da1bcf5e0f9d

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。