《再也不怕elasticsearch》es的进阶查询

ES的进阶查询

本文主要讲解一些ES一些进阶的查询,分页、排序、多条件组合筛选等。

  • 参数列表

在这里插入图片描述

1、简单查询

  • 查询当前索引下全部文档
GET /{索引}/_search
{
  "query": { "match_all": {} }, -- 匹配全部
  "sort": [
    { "age": "asc" } -- 根据age字段排序
  ]
}

这里在ES的官方文档中描述使用GET请求,经过博主测试使用POST也是可以的。
在这里插入图片描述
返回值解析

  • took :运行时间
  • timed_out :请求是否超时
  • _shards :搜索成功多少分片,失败或跳过多少分片
  • max_score :最匹配文档分数
  • hits.total.value :匹配文档数量
  • hits.sort :文档位置
  • hits._score :文档的相关性得分(使用时不适用match_all)

2、 分页查询

GET /{索引}/_search
{
  "query": { "match_all": {} },
  "sort": [
    { "age": "asc" }
  ],
  "from": 1, -- 当前页
  "size": 10 -- 每页展示数
}

根据年龄排序分页查询前10条数据(由于博主只添加了7条所以这里展示了7条数据)
在这里插入图片描述


3、 精确匹配

GET /{索引}/_search
{
  "query": { "term": { "name": "wanger" } }
}

注意:在未添加中文分词器的情况下,如果查询字段不加keyword,直接查询中文会查询不到数据。term查询不区分大小写

查询姓名为王二的用户
在这里插入图片描述


4、 分词匹配查询

GET /{索引}/_search
{
  "query": { "match": { "name": "王二" } }
}

查询姓名包含王二关键字的数据,es会对我们的关键字进行分词,然后查询有一定程度匹配的数据,如果没有设置排序,则默认根据匹配程度排序
在这里插入图片描述


5、 包含查询

GET /{索引}/_search
{
  "query": { "match_phrase": { "name": "王二" } }
}

查询包含王二的数据
在这里插入图片描述


6、 组合查询

GET /{索引}/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "name": "王二" } }
      ],
      "must_not": [
        { "match": { "age": "18" } }
      ]
    }
  }
}

查询姓名包含关键字王二的数据并排除掉年龄为18的匹配数据
在这里插入图片描述

参数解析

bool:Boolean过滤器,多条件组合参数时查询
must:必须匹配,类似于sql中的AND
must_not:必须不匹配,与sql中NOT类似
should :或者匹配,与sql中OR类似

注意:在bool过滤器中should与must共同使用时should(or)会失效

参考文档:ES官方文档

本文讲解了一部分ES常用的查询,将在下一盘文章中详细解析ES中的聚合查询,持续更新中ing…

如果本文有帮助到你的话,请点赞关注一下吧你的点赞关注就是对博主最大的支持

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq360472521/article/details/105149065