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,除了返回聚合结果外,还会返回其它所有的数据。