ES 数据库查询操作指南

技术文章2年前 (2023)发布 gyx131
162 0 0

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

© 版权声明

相关文章

暂无评论

暂无评论...