Elasticsearch基础条件查询

条件查询

query:查询

match:匹配

match_all:匹配所有

csharp 复制代码
#第一种
GET /shopping/_search?q=名字:张三

#第二种
GET /shopping/_search
{
  "query": {
    "match": {
      "名字": "张三"
    }
  }
}

#全量查询 match_all
GET /shopping/_search
{
  "query": {
    "match_all": {
    }
  }
}
分页查询

from开始计算公式:(页码-1) * 每页数据条数

from:表示从第几行开始

size:表示查询多少条文档

csharp 复制代码
#查询从0行开始
GET /shopping/_search
{
  "query": {
    "match_all": {
    }
  },
  "from": 0,
  "size": 2
}

#数据源过滤,只查找_source包含名字的行
GET /shopping/_search
{
  "query": {
    "match_all": {
    }
  },
  "from": 0,
  "size": 2,
  "_source": ["名字"]
}
查询排序

order:排序

desc:降序

csharp 复制代码
# 降序排序,按照年龄降序搜索名字
GET /shopping/_search
{
  "query": {
    "match_all": {
    }
  },
  "_source": ["名字"],
  "sort": {
    "年龄":{
      "order" : "desc"
    }
  }
}
多条件查询

bool:条件

must:类似and,必须 多条件同时成立

csharp 复制代码
#条件同时成立,名字为张三和年龄为36岁
GET /shopping/_search
{
  "query": {
    "bool":{
      "must": [
        {
          "match": {
            "名字": "张三"
          }
        },
        {
          "match": {
            "年龄": 36
        }
        }
      ]
    }
  }
}

should:查询类似or,或者

csharp 复制代码
#条件为搜索名字为张三或李四
GET /shopping/_search
{
  "query": {
    "bool":{
      "should": [
        {
          "match": {
            "名字": "张三"
          }
        },
        {
          "match": {
            "名字": "李四"
        }
        }
      ]
    }
  }
}
范围查询

filter:过滤

range:范围

gte:大于

lte:小于

csharp 复制代码
#条件查询名字张三或李四年龄大于35岁到40岁之间
GET /shopping/_search
{
  "query": {
    "bool":{
      "should": [
        {
          "match": {
            "名字": "张三"
          }
        },
        {
          "match": {
            "名字": "李四"
        }
        }
      ],
      "filter": [
        {
          "range": {
            "年龄": {
              "gte": 35,
              "lte": 40
            }
          }
        }
      ]
    }
  }
}
全文检索

在es中,有文字的一部分也能正常查询到数据,es会将内容分词在倒排索引中匹配,比如"张三",匹配"张"或者"三"都会进行匹配

csharp 复制代码
GET /shopping/_search
{
  "query": {
    "match": {
      "名字": "张"
    }
  }
}

GET /shopping/_search
{
  "query": {
    "match": {
      "名字": "三"
    }
  }
}
完全匹配

match_phrase:完全匹配

csharp 复制代码
GET /shopping/_search
{
  "query": {
    "match_phrase": {
      "名字": "张三"
    }
  }
}
高亮查询

highlight:高亮字段

其实就是特殊的内容进行样式的设定

csharp 复制代码
#对名字高亮显示
GET /shopping/_search
{
  "query": {
    "match_phrase": {
      "名字": "张三"
    }
  },
  "highlight": {
    "fields": {
      "名字": {}
    }
  }
}
聚合查询

aggs:聚合操作

csharp 复制代码
#将所有年龄分组分别统计出来
GET /shopping/_search
{
  "aggs":{ //聚合操作
    "age_group": { //统计结果名称,命名随意
      "terms": { //分组操作
        "field": "年龄"  //分组字段
      }
    }
  }
}
csharp 复制代码
GET /shopping/_search
{
  "aggs":{ //聚合操作
    "age_group": { //统计结果名称,命名随意
      "terms": { //分组操作
        "field": "年龄"  //分组字段
      }
    }
  },
  "size": 0 //取消原始数据,只保留统计后数据
}
csharp 复制代码
#统计结果为年龄的平均值
GET /shopping/_search
{
  "aggs":{ //聚合操作
    "age_agv": { //统计结果名称,命名随意,
      "avg": { //分组操作
        "field": "年龄"  //分组字段
      }
    }
  },
  "size": 0
}
映射关系

properties:特性

sex:性别

keyword:关键字

csharp 复制代码
#创建索引,并定义映射
PUT /user
PUT /user/_mapping
{
  "properties" : {
    "name" : {
      "type" : "text",
      "index" : true
    },
    "sex": {
      "type" : "keyword", //关键字,完全匹配
      "index" : true
    },
    "phone": {
      "type": "keyword", //关键字,完全匹配
      "index" : false
    }
  }
}
csharp 复制代码
#user索引创建数据
PUT /user/_create/1001
{
  "name": "小米",
  "sex": "man",
  "phone": 123456789
}
csharp 复制代码
#查询name模糊匹配值存在,因为创建时type为text
GET /user/_search
{
  "query": {
    "match": {
      "name": "小"
    }
  }
}

#查询sex模糊匹配值为空,因为创建时type为keyword
GET /user/_search
{
  "query": {
    "match": {
      "sex": "ma"
    }
  }
}

#查询phone匹配为空,因为创建时index为false,不能被索引查询
GET /user/_search
{
  "query": {
    "match": {
      "phone": "123456"
    }
  }
}
相关推荐
武子康15 小时前
大数据-237 离线数仓 - Hive 广告业务实战:ODS→DWD 事件解析、广告明细与转化分析落地
大数据·后端·apache hive
大大大大晴天16 小时前
Flink生产问题排障-Kryo serializer scala extensions are not available
大数据·flink
Elasticsearch2 天前
如何使用 Agent Builder 排查 Kubernetes Pod 重启和 OOMKilled 事件
elasticsearch
Elasticsearch3 天前
通用表达式语言 ( CEL ): CEL 输入如何改进 Elastic Agent 集成中的数据收集
elasticsearch
武子康3 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康4 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP4 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库4 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟4 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法