准备样本:

Elasticsearch 提供了基于 JSON 提供完整的查询 DSL 来定义查询
查询条件还适用于删除操作
 
创建索引:
# PUT
http://127.0.0.1:9200/student/

推5个文档进索引:

# POST
http://localhost:9200/student/_doc/1001
{
"name":"zhangsan",
"nickname":"zhangsan",
"sex":"男",
"age":30
} # POST
http://localhost:9200/student/_doc/1002
{
"name":"lisi",
"nickname":"lisi",
"sex":"男",
"age":20
} # POST
http://localhost:9200/student/_doc/1003
{
"name":"wangwu",
"nickname":"wangwu",
"sex":"女",
"age":40
} # POST
http://localhost:9200/student/_doc/1004
{
"name":"zhaoliu",
"nickname":"zhaoliu",
"sex":"女",
"age":30
} # POST
http://localhost:9200/student/_doc/1005
{
"name":"qianqi",
"nickname":"qianqi",
"sex":"女",
"age":50
}

查询操作:

查询索引下的所有文档:

http://127.0.0.1:9200/student/_search

结果:

{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 3,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "student",
"_type": "_doc",
"_id": "ui1dlX4BrIYsUbCa81Wh",
"_score": 1.0,
"_source": {
"name": "Cloud9",
"gender": "male",
"age": 24
}
},
{
"_index": "student",
"_type": "_doc",
"_id": "1001",
"_score": 1.0,
"_source": {
"name": "Cloud9",
"gender": "male",
"age": 24
}
},
{
"_index": "student",
"_type": "_doc",
"_id": "1002",
"_score": 1.0,
"_source": {
"name": "Cloud9",
"gender": "male",
"age": 24
}
}
]
}
}

查询参数:

默认查询无条件,等同于这个条件:

{
"query": {
"match_all": {}
}
}
# "query":这里的 query 代表一个查询对象,里面可以有不同的查询属性
# "match_all":查询类型,例如:match_all(代表查询所有), match,term , range 等等
# {查询条件}:查询条件会根据类型的不同,写法也有差异

匹配K键"name"为”zhangsan“的文档

{
"query": {
"match": {
"name": "zhangsan"
}
}
}

匹配多个字段取值查询

{
"query": {
"multi_match": {
"query": "zhangsan",
"fields": [
"name",
"nickname"
]
}
}
}

精准查询

{
"query": {
"term": {
"name": {
"value": "zhangsan"
}
}
}
}

多字段精准查询

{
"query": {
"terms": {
"name": [
"zhangsan",
"lisi"
]
}
}
}

筛选指定字段展示:

{
"_source": [
"name",
"nickname"

]
,
"query": {
"terms": {
"nickname": [
"zhangsan"
]
}
}
}

包含,或者排除字段:

{
"_source": {
"excludes": [ "name", "nickname" ],
"includes": ["name","nickname"
]
},
"query": {
"terms": {
"nickname": [
"zhangsan"
]
}
}
}

组合条件查询

must,必须匹配

must_not, 必须不匹配

should, 应该匹配

{
"query": {
"bool": {
"must": [
{
"match": {
"name": "zhangsan"
}
}
],
"must_not": [
{
"match": {
"age": "40"
}
}
],
"should": [
{
"match": {
"sex": "男"
}
}
]
}
}
}

范围查询

gt 大于

lt 小于

gte 大于等于

lte 小于等于

{
"query": {
"range": {
"age": {
"gte": 30,
"lte": 35
}
}
}
}

模糊查询

{
"query": {
"fuzzy": {
"title": {
"value": "zhangsan"
}
}
}
}

查询排序

{
"query": {
"match": {
"name": "zhangsan"
}
},
"sort": [
{ "age": { "order": "desc" } }
]
}

多个字段查询排序

{
"query": {
"match_all": {}
},
"sort": [
{ "age": { "order": "desc" } },
{ "_score": { "order": "desc" } }
]
}
查询高亮显示:
Elasticsearch 可以对查询内容中的关键字部分,进行标签和样式(高亮)的设置。
在使用 match 查询的同时,加上一个 highlight 属性:
 pre_tags:前置标签
 post_tags:后置标签
 fields:需要高亮的字段
 title:这里声明 title 字段需要高亮,后面可以为这个字段设置特有配置,也可以空
{
"query": {
"match": {
"name": "zhangsan"
}
},
"highlight": {
"pre_tags": "<font color='red'>",
"post_tags": "</font>",
"fields": {
"name"
: {}
}
}

}
分页查询
from:当前页的起始索引,默认从 0 开始。 from = (pageNum - 1) * size
size:每页显示多少条
{
"query": {
"match_all": {}
},
"sort": [
{ "age": { "order": "desc" } }
],
"from": 0,
"size": 2

}

聚合查询

取最大值

# 获取age值最大的文档
{
"aggs": {
"max_age": {
"max": { "field": "age" }
}
},
"size": 0
}

取最小值

{
"aggs": {
"min_age": {
"min": { "field": "age" }
}
},
"size": 0
}

求和

{
"aggs": {
"sum_age": { "sum": { "field": "age" } }
},
"size": 0
}

求平均

{
"aggs": {
"avg_age": { "avg": { "field": "age" } }
},
"size": 0
}
对某个字段的值进行去重之后再取总数
{
"aggs": {
"distinct_age": { "cardinality": { "field": "age" } }
},
"size": 0
}

state属性,一次性返回所有聚合值,max,min,sum,avg,count

{
"aggs": {
"stats_age": {
"stats": {
"field": "age"
}
}
},
"size": 0
}

桶聚合操作

{
"aggs": {
"age_groupby": {
"terms": {
"field": "age"
}
}
},
"size": 0
}
 

【ElasticSearch】02 查询操作的更多相关文章

  1. ElasticSearch+Kibana 索引操作

    ElasticSearch+Kibana 索引操作 一 前言 ElasticiSearch 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引 ...

  2. 基于百度地图SDK和Elasticsearch GEO查询的地理围栏分析系统(1)

    本文描述了一个系统,功能是评价和抽象地理围栏(Geo-fencing),以及监控和分析核心地理围栏中业务的表现. 技术栈:Spring-JQuery-百度地图WEB SDK 存储:Hive-Elast ...

  3. elasticsearch(3) 数据操作-更新

    一 更新整个文档 更新整个文档的方法和存放数据的方式是相同的,通过PUT 127.0.0.1/test/test/1  我们可以把test/test/1下的文档更新为新的文档 例: PUT 127.0 ...

  4. elasticsearch的索引操作和文档操作总结

    参考文档:https://es.xiaoleilu.com/010_Intro/00_README.html 一.索引操作 1.查看当前节点的所有的index 查看当前节点的所有的index [roo ...

  5. ElasticSearch之CURL操作(有空再去整理)

    https://www.cnblogs.com/jing1617/p/8060421.html ElasticSearch之CURL操作 CURL的操作    curl是利用URL语法在命令行方式下工 ...

  6. elasticsearch 关联查询

    父-子关系文档 父-子关系文档 在实质上类似于 nested model :允许将一个对象实体和另外一个对象实体关联起来. 而这两种类型的主要区别是:在 nested objects 文档中,所有对象 ...

  7. ElasticSearch 常用查询语句

    为了演示不同类型的 ElasticSearch 的查询,我们将使用书文档信息的集合(有以下字段:title(标题), authors(作者), summary(摘要), publish_date(发布 ...

  8. Elasticsearch基本CURD操作语法讲解

    当我们的ES集群搭建完成以后,我怎么能看到集群中各个节点状态以及主节点和健康情况呢,如下讲解使用curl命令来与ES集群进行交互.分别有查询主节点情况.集群状态.以及创建索引查看索引.查看分片以及对E ...

  9. ElasticSearch DSL 查询

    公号:码农充电站pro 主页:https://codeshellme.github.io DSL(Domain Specific Language)查询也叫做 Request Body 查询,它比 U ...

  10. MySQL 查询操作

    目录 基本语法 查询常量 查看表达式 查询函数 查询指定字段 查询所有列 列别名 表别名 条件查询 条件查询运算符 逻辑查询运算符 排序与分页 排序查询(order by) 排序方式 limit 分组 ...

随机推荐

  1. 修改linux默认启动界面——从命令行模式转换为图形化模式

    从命令行模式转换为图形化模式 首先需要安装对应的图形化安装包 yum groupinstall "GNOME Desktop" "Graphical Administra ...

  2. 别想宰我,怎么查看云厂商是否超卖?详解 cpu steal time

    据说有些云厂商会超卖,宿主有 96 个核心,结果卖出去 100 多个 vCPU,如果这些虚机负载都不高,大家相安无事,如果这些虚机同时运行一些高负载的任务,相互之间就会抢占 CPU,对应用程序有较大影 ...

  3. springboot拦截器@resource注解注入为null解决方案 拦截适配配置

    springboot拦截器@resource注解注入为null解决方案  拦截适配配置 为什么@resource注入为nullinteceptor在springcontext之前加载,注入必然是nul ...

  4. 高德的API来查询行政区域查询

    高德的API来查询行政区域查询 1.api接口文档地址 https://lbs.amap.com/api/webservice/guide/api/district GET https://resta ...

  5. 正式开启全站HTTPS加密之旅

    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` 正式开启全站HTTPS加密之旅 日期:2017-7-14 ...

  6. hdfs修复块

    磁盘满了一次,导致hdfs的很多块变成一个副本 看一下副本信息 执行 hdfs fsck / 1007个块少于3个副本一下  而且 hbase的regionsever启动报错 File /apps/h ...

  7. Pycharm创建的虚拟环境,使用命令行指定库的版本进行安装

    Pycharm创建的项目,使用了虚拟环境,对库的版本进行管理:有些项目的对第三方库的版本 要求不同,可使用虚拟环境进行管理 直接想通过pip命令安装,直接看第3点 操作步骤: 1.找到当前项目的虚拟环 ...

  8. 在Markdown中使用base64存图片

    author="CKboss" date="2022-4-19" title="在Markdown中使用base64存图片" +++ 在Ma ...

  9. 基于SQLite3的C学习总结

    背景 针对 SQLite3 的学习总结 arm linux 移植 SQLite 3 如何在 Linux 上移植使用 SQLite3,标题虽然是在讲 arm linux,但实际上是跨平台的. 基于 SQ ...

  10. 全国产!全志T3+Logos FPGA开发板(4核ARM Cortex-A7)规格书

    评估板简介 创龙科技TLT3F-EVM是一款基于全志科技T3四核ARM Cortex-A7 + 紫光同创Logos PGL25G/PGL50G FPGA设计的异构多核国产工业评估板,ARM Corte ...