当前位置: 首页 > news >正文

Elasticsearch专栏-4.es基本用法-查询api

es基本用法-查询api
    • 说明
    • 查询所有
    • 某一字段匹配查询
    • 多字段查询
    • bool查询
    • 范围查询
    • 精确查询
    • 正则匹配
    • 模糊查询
    • 结果处理

说明

es对数据的检索,总结下来就是两部分,即查询和处理。查询指的是查找符合条件的数据,包括查询所有、匹配查询、布尔查询、范围查询、模糊查询等等。处理指的是对查询到的数据做进一步处理,包括是否分页、是否排序、是否聚合、是否分组、是否只返回部分字段等等。es的api就是对这两部分的不同组合。举例如下,数据集使用上一篇创建的bank索引。

查询所有

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

在这里插入图片描述

某一字段匹配查询

这块的查询已经涉及到了分词,指的是查询address中包含Place或National的文档。针对分词查询后面会进一步做深入讲解。

GET /bank/_search
{"query": {"match": {"address": "Place National"}}
}

在这里插入图片描述

多字段查询

multi_match用在多字段查询中,下面的语句表示,只要address或city中,包含mill和urie其中的一个,就算是命中查询。用sql语句表示: select * from bank where (address like ‘%mill%’ or like ‘%urie%’) or (citylike ‘%mill%’ or like ‘%urie%’)

GET /bank/_search
{"query":{"multi_match": {"query": "mill urie","fields": ["address","city"]}}
}

在这里插入图片描述

bool查询

bool查询主要用到三个关键字:must、must_not、should。在mysql中,就是and、not、or的概念。
其中,must表示必须包含,must_not表示一定不能包含,should表示可以包含,也可以不包含。包含的话,排名要比不包含的靠前。

GET /bank/_search
{"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill"}}],"must_not": [{"match": {"age": "18"}}],"should": [{"match": {"lastname": "Wallace"}}]}}
}

在这里插入图片描述

范围查询

在范围查询中,使用的关键词有range、filter,以及表示大于小于的gt、lt、gte、lte。

关键字含义
gt大于
lt小于
gte大于等于
lte小于等于
  1. rang方式
GET /bank/_search
{"query": {"range": {"age": {"gte": "20","lte": "25"}}}
}

在这里插入图片描述

  1. filter方式
GET /bank/_search
{"query": {"bool": {"must": [{"match": {"gender": "M"}},{"match": {"address": "mill"}}],"filter": [{"range": {"age": {"gte": 10,"lte": 50}}},{"range": {"balance": {"gte": 9812,"lte": 9813}}}]}}
}

在这里插入图片描述

精确查询

精确查询可以简单理解为完全匹配查询,用term关键字。在数值型查询中经常用到,而在文本中查询使用,是表示查询时不进行分词,刚好和分词查询关键字match对立。

1.查询单个

GET /bank/_search
{"query": {"match": {"age": 33}}
}

在这里插入图片描述
2.查询多个,此时用terms

GET /bank/_search
{"query": {"terms": {"balance": ["34487","29104"]}}
}

在这里插入图片描述
2.查询多个,也可以用另外一种方式:should+term

GET /bank/_search
{"query": {"bool": {"should": [{"term": {"balance": "34487"}},{"term": {"balance": "29104"}}]}}
}

在这里插入图片描述

正则匹配

GET /bank/_search
{"query": {"wildcard": {"firstname": "*amber"}}
}

在这里插入图片描述

模糊查询

GET /bank/_search
{"query": {"fuzzy": {"firstname": "hol"}}
}

在这里插入图片描述
上述只罗列了常用的查询,除此之外,还有很多其他查询,这里不做演示,感兴趣的小伙伴可以自己查找下。

结果处理

开头我们也说了,es对数据的处理就两部分,查询和处理。上面介绍了查询,现在我们介绍下基本的处理:分页、排序、返回部分字段。

关键字含义
sortdesc/asc
from页数,从0开始
size每页大小
_source只返回需要的字段,可以罗列字段,也可以用通配符
GET /bank/_search
{"query": {"match": {"address": "Hendrickson"}},"sort": [{"balance": "desc"}],"from": 0,"size": 5,"_source": ["balance","account_number","address"]
}

在这里插入图片描述

GET /bank/_search
{"query": {"match": {"address": "Hendrickson"}},"sort": [{"balance": "asc"}],"from": 0,"size": 5,"_source":{"includes": "addr*","excludes": ["name","bir*"]}
}

在这里插入图片描述

http://www.lryc.cn/news/480744.html

相关文章:

  • jmeter基础04_设置外观和字体
  • 重构代码之替换参数为显式方法
  • 三菱QD77MS定位模块速度限制功能
  • Axure PR 9 多级下拉选择器 设计交互
  • Java基础使用②Java数据变量和类型+小知识点
  • 从 HTTP 到 HTTPS 再到 HSTS:网站安全的演变与实践
  • Qt的跨平台介绍
  • 数据库DQL
  • Am I Isolated:一款安全态势基准测试工具
  • Unity性能优化 -- 性能分析工具
  • 【微信小程序】基本语法
  • go中的类型断言详解
  • vite构建的react程序放置图片
  • 学习事件循环
  • 终端NuShell git权限异常处理
  • Mybatis Plus 集成 PgSQL 指南
  • Rust常用数据结构教程 Map
  • <el-popover>可以展示select change改变值的时候popover 框会自动隐藏
  • SQLI LABS | Less-37 POST-Bypass mysql_real_escape_string
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day9
  • 深度学习:GLUE(General Language Understanding Evaluation)详解
  • 基于Multisim直流稳压电源电路±9V、±5V(含仿真和报告)
  • Vue Cli的配置中configureWebpack和chainWebpack的主要作用及区别是什么?
  • ubuntu主机搭建sysroot交叉编译环境
  • Python注意力机制Attention下CNN-LSTM-ARIMA混合模型预测中国银行股票价格|附数据代码...
  • 实验三 JDBC数据库操作编程(设计性)
  • 各种环境换源教程
  • Rust项目中的Labels
  • Jmeter的安装和使用
  • 初识Electron 进程通信