PUT 创建索引
DEL 删除索引
7.3 查询操作
(1)单关键词查询
GET /my_index/_doc/_search { "query": { "match": { "user": "nihao" } } }
(2)多关键词查询
GET /my_index/_doc/_search { "query": { "multi_match": { “user": ["nihao","again"] } } }
(3)精确查询
单词精确查询
GET /my_index/_doc/_search { "query": { "term": { "hostname": "xxx" } } }
多词精确查询
GET /my_index/_doc/_search { "query": { "terms": { "status": [ 304, 302 ] } } }
(4)范围查询
GET /my_index/_doc/_search { "query": { "range": { "age": { "gte": 20, "lt": 30 } } }
gt : 大于
gte: 大于等于
lt : 小于
lte: 小于等于
to:小于
from:大于等于
(5)通配符查询
GET /my_index/_doc/_search { "query": { "wildcard": { "postcode": "W?F*HW" } } }
通配符的含义:
?,匹配任何单个字符
*,可以匹配零或更多字符,包括一个空的
(6)正则表达式查询
GET /my_index/_doc/_search { "query":{ "regex":{ "title":{ "value":'cr.m[ae]', "boost":10.0 } } } } (6)布尔查询
布尔查询把多个子查询组合(combine)成一个布尔表达式,所有子查询之间的逻辑关系是与(and);只有当一个文档满足布尔查询中的所有子查询条件时,ElasticSearch引擎才认为该文档满足查询条件。
布尔查询支持的子查询类型共有四种,分别是:must,should,must_not和filter:
must子句:文档必须匹配must查询条件;
should子句:文档应该匹配should子句查询的一个或多个;
must_not子句:文档不能匹配该查询条件;
filter子句:过滤器,文档必须匹配该过滤条件,跟must子句的唯一区别是,filter不影响查询的score;
should子句是数组字段,包含多个should子查询,默认情况下,匹配的文档必须满足其中一个子查询条件。如果查询需要改变默认匹配行为,查询DSL必须显式设置布尔查询的参数minimum_should_match的值,该参数控制一个文档必须匹配的should子查询的数量。
GET /my_index/_doc/_search { "bool" : { "must" : { "term" : { "user" : "kimchy" } }, "filter": { "term" : { "tag" : "tech" } }, "must_not" : { "range" : { "age" : { "from" : 10, "to" : 20 } } }, "should" : [ { "term" : { "tag" : "wow" } }, { "term" : { "tag" : "elasticsearch" } } ], "minimum_should_match" : 1 } }
(7)聚合查询
聚合查询是在数据上生成复杂的分析统计。聚合查询中有两个概念Buckets(桶)、Metrics(指标)。
Buckets(桶):满足某个条件的文档集合。
Metrics(指标):为某个桶中的文档计算得到的统计信息(比如对数据集进行avg,max操作)。
一个聚合就是一些桶和指标的组合,类似于sql中的group by。
GET /my_index/_doc/_search { "sizes":0 "aggs": { "t_shirts": { "filter": { "term": { "type": "t-shirt" } }, "aggs": { "avg_price": { "avg": { "field": "price" } } } } } }
注:size不设置为0,除了返回聚合结果外,还会返回其它所有的数据。