九、删除索引
删除索引及索引中的数据
DELETE /my-index-000001
根据id删除单条索引数据
DELETE /my-index-000001/_doc/20210602060517329146
根据查询结果删除数据:
POST /my-index-000001/_delete_by_query?pretty { "query": { "match_all": {} } }
十、基础查询
1、查询全部
无条件查询,如果返回数据量过多,会自动分页。
GET /my-index-000001/_search
等同于match_all
GET /my-index-000001/_search { "query": { "match_all": {} } }
2、指定返回字段
GET my-index-000001/_search { "query": { "match_all": { } }, "fields": [ "@timestamp" ], "_source": false, "sort": [ { "@timestamp": "desc" } ] }
说明:
有时候我们不希望返回索引中的全部字段,那么可以通过fields属性指定需要返回的字段。
这里注意,如果通过fields指定了需要返回的字段,最好同时将_source属性设置为false,否则仍会会返回_source。
2、term精确查询
查看年龄age为25岁的记录:
GET my-index-000001/_search { "query":{ "term":{ "age":25 } } }
查询姓名为小龙的记录:
GET my-index-000001/_search { "query":{ "term":{ "name" : "小龙" } } }
3、match分词匹配查询
GET my-index-000001/_search { "query":{ "match":{ "content" : "Java编程" } } }
结果:
{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : 2.9542089, "hits" : [ { "_index" : "my-index-000001", "_type" : "_doc", "_id" : "rYv3ZXoBD69AlULo3Bnk", "_score" : 2.9542089, "_source" : { "content" : "小明同学觉得java是最好的编程语言", "name" : "小明", "age" : 20, "@timestamp" : "2020-05-08 16:25:42" } }, { "_index" : "my-index-000001", "_type" : "_doc", "_id" : "20210602060517329146", "_score" : 1.1599741, "_source" : { "content" : "小明同学今天学习编程5个小时", "name" : "小明", "age" : 20, "@timestamp" : "2020-05-08 16:25:42" } } ] } }
说明:
只有text类型的字段才能进行分词匹配。输入的关键字“Java编程”被分解成了 “JAVA”、“编程”后才去和content分词解析后的数据进行匹配。
4、分页
GET my-index-000001/_search { "from":0, "size":2, "query": { "match_all": { } }, "sort": [ { "@timestamp": "asc" } ] }
说明:
from和size是起到分页的作用。from指定起始记录行,size指定返回多少条数据。
5、排序
GET my-index-000001/_search { "query": { "match_all": { } }, "sort": [ { "@timestamp": "desc" } ] }
说明:
通过sort属性指定排序字段,desc倒序,asc正序。
6、范围查询
GET /my-index-000001/_search { "query": { "range": { "@timestamp": { "gte": "2020-01-08 16:25:42", "lt": "2020-10-08 16:25:42" } } }, "fields": [ "@timestamp" ], "_source": false, "sort": [ { "@timestamp": "desc" } ] }
说明:
通过range实现范围查询。
范围操作符包含:
gt : 大于
gte : 大于等于
lt : 小于
lte : 小于等于
7、聚合查询
按年龄统计记录数
GET /my-index-000001/_search { "size": 0, "aggs": { "my-agg-name": { "terms": { "field": "age" } } } }
注意⚠️:
这类聚合统计一定要指定size为0
结果:
{ "took" : 2, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 8, "relation" : "eq" }, "max_score" : null, "hits" : [ ] }, "aggregations" : { "my-agg-name" : { "doc_count_error_upper_bound" : 0, "sum_other_doc_count" : 0, "buckets" : [ { "key" : 25, "doc_count" : 5 }, { "key" : 20, "doc_count" : 2 }, { "key" : 29, "doc_count" : 1 } ] } } }
总结
本文主要是参考官网的Quick start快速入门ES的实操指南,希望对大家快速上手ES有所帮助。