Elasticsearch Index API Query DSL

时间:2021-07-15 00:38:58

这篇小菜给大家演示和讲解一些Elasticsearch的API,如在工作中用到时,方便查阅。


一、Index API


创建索引库

curl -XPUT ‘:9200/test_index/‘ -d ‘{     "settings" : {       "index" : {       "number_of_shards" : 3,       "number_of_replicas" : 1       }     },     "mappings" : {       "type_test_01" : {         "properties" : {           "field1" : { "type" : "string"},           "field2" : { "type" : "string"}         }       },       "type_test_02" : {         "properties" : {           "field1" : { "type" : "string"},           "field2" : { "type" : "string"}         }       }     } }‘


验证索引库是否存在

curl –XHEAD -i ‘:9200/test_index?pretty‘

注: 这里加上的?pretty参数,是为了让输出的格式更好看。


查看索引库的mapping信息

curl –XGET -i ‘:9200/test_index/_mapping?pretty‘


验证当前库type为article是否存在

curl -XHEAD -i ‘:9200/test_index/article‘


查看test_index索引库type为type_test_01的mapping信息

curl –XGET -i ‘:9200/test_index/_mapping/type_test_01/?pretty‘


测试索引分词器

curl -XGET ‘:9200/_analyze?pretty‘ -d ‘ {   "analyzer" : "standard",   "text" : "this is a test" }‘


输出索引库的状态信息

curl ‘:9200/test_index/_stats?pretty‘


输出索引库的分片相关信息

curl -XGET ‘:9200/test_index/_segments?pretty‘


删除索引库

curl -XDELETE :9200/logstash-nginxacclog-2016.09.20/


二、Count API


简易语法

curl -XGET ‘:port/索引库名称/_type(当前索引类型,没有可以不写)/_count


用例:

1、统计 logstash-nginxacclog-2016.10.09 索引库有多少条记录

curl -XGET ‘:9200/logstash-nginxacclog-2016.10.09/_count‘


2、统计 logstash-nginxacclog-2016.10.09 索引库status为200的有多少条记录

curl -XGET ‘:9200/logstash-nginxacclog-2016.10.09/_count?q=status:200‘


DSL 写法

curl -XGET ‘:9200/logstash-nginxacclog-2016.10.09/_count‘ -d ‘ { "query":   { "term":{"status":"200"}} }‘


三、Aggregations API (数据分析和统计)


注: 聚合相关的API只能对数值、日期 类型的字段做计算。


1、求平均数

业务场景: 统计访问日志中的平均响应时长

curl -XGET ‘:9200/logstash-nginxacclog-2016.10.09/_search?pretty‘ -d ‘{ "query" : { "match_all" : {} }, "aggs" : { "avg_num" : { "avg" : { "field" : "responsetime" } } },"size":0  # 这里的 size:0 表示不输出匹配到数据,只输出聚合结果。 }‘ {   "took" : 598,   "timed_out" : false,   "_shards" : {     "total" : 5,     "successful" : 5,     "failed" : 0   },   "hits" : {     "total" : 32523067,     "max_score" : 0.0,     "hits" : [ ]   },   "aggregations" : {     "avg_num" : {       "value" : 0.0472613558675975     }   } } # 得到平均响应时长为 0.0472613558675975 秒


2、求最大值