这篇小菜给大家演示和讲解一些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、求最大值