ElasticSearch:查询操作合集

发布于:2024-04-22 ⋅ 阅读:(176) ⋅ 点赞:(0)

先看下我的数据:
在这里插入图片描述

1、查询所有文档:

GET /cartest/_search

或者

GET /cartest/_search
{
  "query": {
    "match_all": {}
  }
}

2、匹配查询:

match匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系

GET /cartest/_search
{
  "query": {
    "match": {
      "name": "风云"
    }
  }
}

在这里插入图片描述

3、字段匹配查询:

multi_match 与match类似,不同的是它可以在多个字段中查询。

在这里插入图片描述

4、关键字精准查询:

这个term查询不对查询条件进行分词,
要是text文本类型就会出错,keyword可以进行此类查询

这里我们查 name:风云 就什么都没查到
在这里插入图片描述
向 cartest 中再加一个keyword类型的class字段

PUT /cartest/_mapping
{
	 "properties": {
		 "class":{
			 "type": "keyword",
			 "index": true
		 }
	 } 
}

在这里插入图片描述
添加一条数据

POST /cartest/_doc
{
  "name": "wang",
  "page": "cn",
  "say": "欢迎",
  "time": "2020-12-11",
  "class": "box"
}

在这里插入图片描述
我们再次查询:

GET /cartest/_search
{
   "query": {
     "term": {
       "class": {
        "value": "box"
       }
     }
   }
}

在这里插入图片描述

5、多关键字查询:

terms 查询和term 查询一样,但它允许你指定多值进行匹配。
如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in
当然,一定要记得查询的字段为关键字keyword类型,不然查不到内容

GET /cartest/_search
{
   "query": {
     "terms": {
       "class": ["box", "box-1"]
     }
   }
}

在这里插入图片描述

6、组合查询:

bool把各种其它查询通过must(必须 )、must_not(必须不)、should(应该)的方式进行组合

在这里插入图片描述

7、范围查询:

操作符 说明
gt 大于>
gte 大于等于>=
lt 小于<
lte 小于等于<=

查询 num 100 - 150之间的数据

GET /cartest/_search
{
  "query": {
   "range": {
     "num": {
       "gte": 100,
       "lte": 150
     }
   }
  }
}

在这里插入图片描述
查询 04 - 06号之间的数据
在这里插入图片描述

8、分页查询+排序:

也可设置多字段排序,主次为代码顺序

GET /cartest/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "num": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 3
}

在这里插入图片描述
当然也可以按时间排序
在这里插入图片描述
9、查询需要的字段

GET /cartest/_search
{
  "_source": ["name", "time", "num"],
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "time": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 3
}

在这里插入图片描述
10、过滤查询:

includes:来指定想要显示的字段
excludes:来指定不想要显示的字段

只显示 name time 字段
在这里插入图片描述
不显示 name time 字段
在这里插入图片描述

11、聚合查询:

聚合允许使用者对 es 文档进行统计分析,类似与关系型数据库中的 group by,当然还有很
多其他的聚合,例如取最大值、平均值等等。

获取 num 最大值,size是 hits中数值的数量

GET /cartest/_search
{
  "aggs": {
    "max_age": {
      "max": {
        "field": "num"
      }
    }
  },
  "size": 0
}

在这里插入图片描述
平均值:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到