ElasticSearch基本语法知识

1、查询规则

(1)命令行界面查询:

curl -XGET/-XPOST ip地址:端口号/集群索引名/_search?q=*&pretty

(2)Postman查询:

Step1:POST/GET     ip地址:端口号/集群索引名/_search

Step2:Body体中输入ES查询语句

2、size字段:指定输出size条查询结果

“size”:n

3、_source字段:指定输出的字段

“_source”:[“”,””,””]

4、range范围查询:

  • gte:大于等于
  • gt:大于
  • lte:小于等于
  • lt:小于

5、wildcard通配符查询

?用来匹配任意字符

*用来匹配零个或者多个字符

6、sort排序

7、使用match字段的时候会被分词,term不会分词

8、ES聚合(第一个字段field):

  • 指标聚合:max、min、avg、sum、status、value_count(统计⾮空字段的⽂档数)
  • 桶聚合:terms(分组group by)、filter-term(相当于where,过滤结果)、filters-term-term...、range
  • date_histogram聚合

9、date_histogram聚合(按时间间隔统计。支持 year,quarter,month,week ,day 等间隔统计 及时区设置。)

  • interval字段支持多种关键字:`year`, `quarter`, `month`, `week`, `day`, `hour`, `minute`, `second`
  • 通过设置format对返回的结果进行格式化,返回结果中,key_as_string是格式化后的日期,key显示了是日期时间戳
  • time_zero:ES中的时区表示
  • min_doc_count:默认值0;返回最小的文档数。强制返回空数据。如果是0,时间间隔内缺少数据,则自动补充0.一般场景就是返回空数据,减少程序的处理。extended_bounds:扩展数据范围,此值只有当min_doc_count 为0时才具有意义。此值与min_doc_count一起使用,是强制返回空数据

10、terms聚合(group by分组):

(1)根据一个字段聚合

“terms”:{“field”:”字段名”}

(2)根据多个字段聚合

"terms":{"script":"doc['字段名.keyword'].value"+'#split#'+doc['字段名.keyword'].value"}

11、使用curl命令时,单双引号混用的时候要使用“\u0027”来转义单引号

12、script对字符串进行截取

doc['字段名.keyword'].value.substring(doc['字段名.keyword'].length()-5,doc['字段名.keyword'].length())

13、ES聚合默认返回10条数据,如想返回更多,则需要指定以下字段:

"size":100,           #聚合返回的结果数量,默认10

"shard_size":10000             #ES查询时对各个分片的请求数量,默认(1.5*size+10)

参考:

(1)https://blog.csdn.net/pony_maggie/article/details/104887055?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-14-104887055.nonecase&utm_term=es%20%E5%8F%96%E8%81%9A%E5%90%88%E4%B9%8B%E5%90%8E%E7%9A%84%E5%85%A8%E9%83%A8%E7%BB%93%E6%9E%9C

(2)http://itindex.net/detail/60451-elasticsearch-%E8%81%9A%E5%90%88-terms

(3)https://blog.csdn.net/ubuntutouch/article/details/104141398

ElasticSearch Examples:

curl -XPOST 地址:端口/索引/_search -d '
{
    "query":{
        "bool":{
            "must":[
                 {
                   "match":{
                        "log_type":0
                    } 
                 },
                 {
                    "match":{
                        "service_ei":EI1234
                    }
                 },
                 {
                    "range":{
                        "@timestamp":{
                            "gte":"2021-10-10T00:19:41.000Z",
                            "lte":"2021-10-10T023:19:41.000Z"
                        }
                    }
                 }   
            ]
        }
    },
    "aggs":{
        "statistics":{
            "terms":{
                "script":"doc['字段名.keyword'].value"+'#split#'+doc['字段名.keyword'].value+'#split#'+doc['字段名.keyword'].value.substring(doc['字段名.keyword'].length()-5,doc['字段名.keyword'].length())",
            "size":100,
            "shard_size":10000
            }
        }
    },
    "size":0
}' > a.txt

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值