ElasticSearch 搜索数据

在这里插入图片描述

精确查询

存在查询

Exists query 用于查询某个字段不为空的数据。如下所示,查询 age 不为空的 数据

POST user/_search
{
   
  "query": {
   
    "exists": {
   
      "field": "age"
    }
  }
}

主键查询

通过 _id 字段查询数据

POST user/_search
{
   
  "query": {
   
    "ids": {
   
      "values": ["1", "2", "3"]
    }
  }
}

前缀查询

POST user/_search
{
   
  "query": {
   
    "prefix": {
   
      "address": {
   
        "values": "beijing"
      }
    }
  }
}

范围查询

POST user/_search
{
   
  "query": {
   
    "range": {
   
      "age": {
   
        "gte": 10,
        "lte": 20
      }
    }
  }
}
查询参数 解释
gt >
gte >=
lt <
lte <=
format 设置时间格式

正则查询

POST user/_search
{
   
  "query": {
   
    "regexp": {
   
      "name": "*小*"
    }
  }
}

术语查询

POST user/_search
{
   
  "query": {
   
    "term": {
   
      "name": "小明"
    }
  }
}

多术语查询

terms query 和 term query 基本一样,terms query 允许在参数中传递多个查询词

POST user/_search
{
   
  "query": {
   
    "terms": {
   
      "name": ["小明", "小红"]
    }
  }
}

通配符查询

POST user/_search
{
   
  "query": {
   
    "wildcard": {
   
      "name": "*小*"
    }
  }
}

支持如下两个通配符

  1. ?匹配单个字符
  2. * 匹配零个或多个字符,包括空字符

Compound queries(复合查询)

布尔查询

类型 说明
must 必须匹配,需要计算相关度得分,类似于逻辑上的 AND 操作
filter 必须匹配但不影响评分,类似于 must 但更轻量
should 至少有一个条件匹配,类似于逻辑上的 OR 操作,可以用 minimum_should_match 指定至少匹配的条件数量
must_not 条件不能匹配,类似于逻辑上的 NOT 操作

Match all query(查询全部)

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

分页

普通分页

GET user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "from": 0,
  "size": 20
}

from:指定从哪开始
size:指定要返回的结果数量

当 from + size 的值超过10000 的时候会报错,如果一定要使用这种方式,可以在索引配置中调大 index.max_result_window 的值。当数量超过 10000 的时候推荐使用 search after 这种方式

滚动分页

search after 分页

排序

可选值 解释
asc 升序
desc 降序
GET user/_search
{
   
  "query": {
   
    "match_all": {
   }
  },
  "sort": [
    {
    "age": "desc" },
    {
    "email": "asc" }
  ]
}

参考博客

官方文档分页或排序
[1]https://www.elastic.co/guide/en/elasticsearch/reference/8.11/sort-search-results.html

相关推荐

  1. Elasticsearch向量数据存储与搜索

    2023-12-27 00:16:01       33 阅读
  2. 熟悉ElasticSearch 集群中搜索数据的过程吗?

    2023-12-27 00:16:01       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-27 00:16:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-27 00:16:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-27 00:16:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-27 00:16:01       20 阅读

热门阅读

  1. ubuntu18.04安装sqlserver2019

    2023-12-27 00:16:01       33 阅读
  2. Create react app 修改webapck配置导入文件alias

    2023-12-27 00:16:01       46 阅读
  3. 【负载均衡】Keepalived 高可用详解

    2023-12-27 00:16:01       39 阅读
  4. Ubuntu下编译Qt5.15源码

    2023-12-27 00:16:01       82 阅读
  5. linux代码 PBS提交fluent脚本

    2023-12-27 00:16:01       32 阅读
  6. Unity-序列化和反序列化

    2023-12-27 00:16:01       43 阅读
  7. ansible_jinja2模板的使用

    2023-12-27 00:16:01       32 阅读
  8. 设计模式笔记

    2023-12-27 00:16:01       30 阅读
  9. MySql 事务隔离级别详解

    2023-12-27 00:16:01       34 阅读
  10. python初试四

    2023-12-27 00:16:01       41 阅读