05 elasticsearch文档的复杂查询

本文探讨了三位青少年——张三、李四和王五,他们在编程、学习和兴趣领域的点滴,展示不同技术标签下的成长路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

添加数据

PUT /test/_doc/1
{
  "name": "张三",
  "age": 15,
  "desc": "知道的越多,不知道的更多",
  "tag": [
    "程序员",
    "技术宅",
    "抑郁"
  ]
}

PUT /test/_doc/2
{
  "name": "李四",
  "age": 22,
  "desc": "学无止境",
  "tag": [
    "游戏狂",
    "渣滓",
    "阳光"
  ]
}

PUT /test/_doc/3
{
  "name": "王五",
  "age": 22,
  "desc": "无法形容",
  "tag": [
    "旅游",
    "画画",
    "健身"
  ]
}

PUT /test/_doc/4
{
  "name": "法外狂徒张三",
  "age": 15,
  "desc": "法外之地",
  "tag": [
    "唱歌",
    "运动",
    "游泳"
  ]
}

在这里插入图片描述

# 根据id查询某个数据信息
GET /test/_doc/1

在这里插入图片描述

复杂查询
模糊查询

简写的查询语句
select * from _doc where name="%李四%"

# 精确匹配
GET /test/_doc/_search?q=name:李四

# 模糊匹配(注意值的属性不能为keyword;keyword不支持分页)
GET /test/_doc/_search?q=name:

在这里插入图片描述
完整的查询语句

GET test/_doc/_search
{
  "query": {
    "match": {
      "name": "张三"
    }
  }
}

查询语句分析:
在这里插入图片描述
查询结果分析:
在这里插入图片描述

查询结果字段过滤

查询结果字段过滤
等同于select name,desc from _doc where name=“张三”

GET test/_doc/_search
{
  "query": {
    "match": {
      "name": "张三"
    }
  },
  "_source": ["name","desc"]
}

在这里插入图片描述

排序

select * from _doc where name=“张三” order by age desc

GET test/_doc/_search
{
  "query": {
    "match": {
      "name": "张三"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

在这里插入图片描述

分页查询

limit

GET test/_doc/_search
{
  "query": {
    "match": {
      "name": "张三"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 1
}

在这里插入图片描述

布尔值查询

多条件查询
must(and),所有条件都要符合 ; where name=“张三” and age=7

GET test/_doc/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "张三"
          }
        },
        {
          "match":{
            "age": 7
          }
        }
      ]
    }
  }
}

在这里插入图片描述
should(or),满足其中一个条件 ; where name=“张三” or age=7

GET test/_doc/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "张三"
          }
        },
        {
          "match":{
            "age": 7
          }
        }
      ]
    }
  }
}

在这里插入图片描述
must_not(not) 查询相反条件 ; where age!=7

GET test/_doc/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match":{
            "age": 7
          }
        }
      ]
    }
  }
}

在这里插入图片描述

过滤器
GET test/_doc/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match":{
            "age": 7
          }
        }
      ],
      "filter":{
        "range":{
          "age":{
            "gt":10,
            "lt":20
          }
        }
      }
    }
  }
}
  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于
    在这里插入图片描述
    在这里插入图片描述
匹配多个条件
GET test/_doc/_search
{
  "query": {
    "match": {
      "tag":"运动 技术"
    }
  }
}

在这里插入图片描述

关于分词
  • term ,直接查询精确的
  • match,会使用分词器解析!(先分析文档,然后在通过分析的文档进行查询!|
test与keyword

test会被分词器解析;keyword不会被分词器解析
(即同一个词,与test类型 与 查询条件 只要有一个字匹配上就会查询出 模糊查询;
但是keyword 必须和 查询条件 一模一样才会被匹配上 精准查询)
在这里插入图片描述
在这里插入图片描述

查询高亮
GET test/_doc/_search
{
  "query": {
    "match": {
      "name": "张三"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key' style='color:red'>",
    "post_tags": "</p>",
    "fields": {
      "name": {}
    }
  }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岿然如故

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值