Elasticsearch基础条件查询

news/2024/7/7 5:52:42 标签: elasticsearch, 大数据
条件查询

query:查询
match:匹配
match_all:匹配所有

#第一种
GET /shopping/_search?q=名字:张三

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

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

from开始计算公式:(页码-1) * 每页数据条数
from:表示从第几行开始
size:表示查询多少条文档

#查询从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:降序

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

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

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

should:查询类似or,或者

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

filter:过滤
range:范围
gte:大于
lte:小于

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

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

GET /shopping/_search
{
  "query": {
    "match": {
      "名字": "张"
    }
  }
}

GET /shopping/_search
{
  "query": {
    "match": {
      "名字": "三"
    }
  }
}

在这里插入图片描述

完全匹配

match_phrase:完全匹配

GET /shopping/_search
{
  "query": {
    "match_phrase": {
      "名字": "张三"
    }
  }
}
高亮查询

highlight:高亮字段
其实就是特殊的内容进行样式的设定

#对名字高亮显示
GET /shopping/_search
{
  "query": {
    "match_phrase": {
      "名字": "张三"
    }
  },
  "highlight": {
    "fields": {
      "名字": {}
    }
  }
}

在这里插入图片描述

聚合查询

aggs:聚合操作

#将所有年龄分组分别统计出来
GET /shopping/_search
{
  "aggs":{ //聚合操作
    "age_group": { //统计结果名称,命名随意
      "terms": { //分组操作
        "field": "年龄"  //分组字段
      }
    }
  }
}

在这里插入图片描述

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

properties:特性
sex:性别
keyword:关键字

#创建索引,并定义映射
PUT /user
PUT /user/_mapping
{
  "properties" : {
    "name" : {
      "type" : "text",
      "index" : true
    },
    "sex": {
      "type" : "keyword", //关键字,完全匹配
      "index" : true
    },
    "phone": {
      "type": "keyword", //关键字,完全匹配
      "index" : false
    }
  }
}
#user索引创建数据
PUT /user/_create/1001
{
  "name": "小米",
  "sex": "man",
  "phone": 123456789
}
#查询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"
    }
  }
}

http://www.niftyadmin.cn/n/5191402.html

相关文章

Android手机投屏神器scrcpy

scrcpy 下装/安装 scrcpy 用于电脑控制 Android 设备的命令行工具 官方下载地址:https://github.com/Genymobile/scrcpy/releases 非官方下载地址 https://download.csdn.net/download/weixin_43335288/88505202 下载后直接解压(免安装) 连…

QT 使用mysql

版本:ubuntu:20.04.1 mysql: 8.0.35 QT :5.12.8 1.安装mysql sudo apt install mysql-server 下载完后查看mysql状态 sudo service mysql status 如下图active(running)则下载成功,运行中…

CF1899B 250 Thousand Tons of TNT

题目链接 题目 题目大意 T T T 组测试数据 每组 n n n 个货物,第 i i i 个货物 的重量是 a i a_i ai​ 用k辆货车按顺序装这些货物,条件是每辆车上的货物个数都一样,也即是说 n n n 必须能被 k k k 整除, 求任意两辆车货物总…

数据科学家应该知道的 10 个高级深度学习架构!

一、介绍 跟上深度学习的最新进展变得非常困难。几乎每天都会出现深度学习的新创新或新应用。然而,这些进步大部分都隐藏在 ArXiv / Springer 等媒体上发表的大量研究论文中。 本文包含深度学习的一些最新进展以及 keras 库中的实现代码。我还提供了…

Mac安装win程序另一个方案

前言 今天跟大家分享的是mac装win程序的另一个思路,不需要大动干戈的装双系统、虚拟机。最后分享感受,先说过程吧。 一、思路介绍 其实,就是利用CrossOver,这个软件的介绍大家可以自行了解。不过不得不说这玩意还是国外的人思路新…

GO抽象工厂模式

既然工厂模式每个产品都需要实现对应的工厂类去生成相关实例,提取产品的共性,提高代码的内聚性, 就是抽象工厂模式要干的。在抽象工厂中,依然是不同产品对应不同的工厂类,但可以尽可能将具有相同共性的产品类别合在一起…

Linux命令(125)之scp

linux命令之scp 1.scp介绍 linux命令scp用于在两个主机之间安全的复制文件和目录 2.scp用法 scp [参数] <source> <target> scp常用参数 参数说明-P指定远程主机的端口-p复制文件时&#xff0c;保留原始文件的属性(E [rootrhel77 ~]# scp 192.168.10.249.txt r…

信息系统项目管理师 第四版 第16章 项目采购管理

1.管理基础 1.1.协议/采购合同 1.2.管理新实践 2.项目采购管理过程 2.1. 过程概述 2.2. 裁剪考虑因素 2.3.敏捷与适应方法 3.规划采购管理 3.1.输入 3.2.工具与技术 3.3.输出 4.实施采购 4.1.输入 4.2.工具与技术 4.3.输出 5.控制采购 5.1.输入 5.2.工具与技术…