elasticsearch查询搜索命令大全
查询简介
叶子查询子句
叶子查询子句在特定字段中查找特定值,例如match,term或range查询。 这些查询可以自己使用。
复合查询子句
复合查询子句包装其他叶查询或复合查询,并用于以逻辑方式组合多个查询(例如bool或dis_max查询),或更改其行为(例如constant_score查询)。复合查询子句包含以下几种:
- bool query
- boosting query
- constant_score query
- dis_max query
- function_score query
我们通常只会用到bool查询
查询子句的行为会有所不同,具体取决于它们是在查询上下文中(Query)还是在过滤器(Filter)上下文中使用。
1、term和terms
terms相关于sql里的In
term后面的value,不能是数组,只能是一个值,否则会报错。比如 {"term":{"age":"80后"}}
terms后面的value,必须是数组,不能是一个值,否则会报错,比如 {"term":{"age":["80后"]}}
term和terms等查询,不会对查询对字段进行分词处理,适合于date、num、id等确切数据进行搜索
例如:age字段包含的值为80后、90后。使用term查询,{"term":{"age":"80后"}} 这样是无法查询到age是"80后"的数据的,因为term不会对"80后"进行分词,而es中存储的age字段,会把"80后"分成“80”和“后”,没有“80后”,所以使用term无法查询到
es会对中文,-等组成的字符串自动分词
解决此问题需要使用keyword
{"term":{"age.keyword":"80后"}}
# 查询age为39的所有记录
POST /bank/_search?pretty
{ "query": {"term": { "age": 39 } }}
# terms后的values值,如果是数组的话,是或的关系,不是且的关系。
# 以下示例为查询property_newOrOldExtent,可能是10,或者8,或者5...的数据
{"terms":{"property_newOrOldExtent":[10,8,5,3,0]}}
must
相当于sql里的and
出现于匹配查询当中,有助于匹配度(_score)的计算
must_not
相当于sql里的not
满足的内容不会出现,与filter功能相反,属于过滤,不会影响分值的计算,但是会过滤掉不符合的数据
shoud
相当于sql里的or
该条件下的内容是应该满足的内容,如果符合会增加分值,不符合降低分值,不会不显示
shoud_not
filter
必须满足才能出现,属于过滤,不会影响分值的计算,但是会过滤掉不符合的数据
2、match
match的所有方法,都会对字段进行分词,所查询的字段数据只要包含分词后结果的一个,就会被查询到
match_phrase:短语匹配查询,必须匹配短语中的所有分词,并且保证各个分词的相对位置不变
multi_match:查询多个字段包含某个关键词的数据
# 查询content或education中含有"大学"的数据
GET index_1/_search{"query": {"bool": {"filter": {"multi_match": {"query": "大学","fields": ["content", "education"]}}}}
match_all:查询所有文档
GET index_1/_search { "query": { "match_all": {} }
3、range
range范围查找,查找某一范围的所有数据
gt:大于
gte:大于等于
lt:小于
lte:小于等于
# 查询时间大于等于2019-08-10 10:08:29,小于等于2019-08-13 10:08:29的数据
GET index_4/_search{"query": {"bool": {"filter": {"range": {"date": {"gte": "2019-08-10 10:08:29", "lte": "2019-08-13 10:08:29"} }}}}
4、sort
sort按照某些字段对数据进行排序,可以是一个字段,也可以是多个字段
desc:降序
asc:生序
# 查询数据按照时间的降序排列
GET index_1/_search{"sort": [{"date": {"order": "desc"}}], "query": {"match_all": {}}
5、_source
对于搜索的结果,只关注某些字段的值
# 查询所有的数据的name和age
GET index_1/_search{"_source": ["name", "age"], "query": {"match_all": {}}
6、from和size
from:从某个位置开始查询,最小为0,某些情况下可以为-1(下一篇说明)
size:查询长度
from+size不能大于10000,否则es会报错(下一篇解决)
# 查询前20条数据,并按照date的降序排列
GET index_1/_search{"from": 0,"size": 20, "sort": [{"date": {"order": "desc"}}], "query": {"match_all": {}}
}
7、fuzzy
模糊匹配
8、wildcard
通配符查询
must的两个条件都必须满足,should中的两个条件至少满足一个就可以。
综合示例
GET idx_pro/_search
{"query": {"bool": {"must": [{ "match": {"name": "花花公子羽绒服"}}],"must_not": [{"term": {"proId": 6}}], "should": [{"terms": {"name.keyword": ["花花公子暖心羽绒服", "花花公子外套"]}}], "filter": {"range": {"createTime": {"gte": "2019-12-12 17:56:56","lte": "2019-12-19 17:56:56","format": "yyyy-MM-dd HH:mm:ss"}}}}}
}
elasticsearch查询搜索命令大全相关推荐
- Elasticsearch的搜索命令
Elasticsearch的搜索命令 文章目录 Elasticsearch的搜索命令 数据准备 URI Search q(查询字符串) analyzer(指定查询字符串时使用的分析器) df(指定查询 ...
- oracle表空间查询维护命令大全之二(undo表空间)
--undo表空间汇总 --查看全部的表空间名字 select name from v$tablespace; --创建新的UNDO表空间,并设置自己主动扩展參数; create undo table ...
- 最全的SEO搜索命令整理
做为一名SEOER其实我们还是要多多学习一些搜引擎的知识,哪怕有的不清楚但是最起码要有个了解.今天就整理了一些很多人没有用过的一些搜索引擎命令,百度高级指令与谷歌高级指令. SEO搜索命令大全 1.双 ...
- linux命令大全(完善中)
bash作为大多数的linux系统的默认字符解析器,所以必须了解bash的优势 1.默认保存历史命令(可以用上下键翻看) 2.命令输入前几位可用tab键补全 3.强大的批量处理脚本 4.实用的环境变量 ...
- 常用Linux命令、文件操作解压缩相关、Linux命令大全、测试查询
初学Linux,记录资料,以备留存,亲手测试了一部分,有的正确,不正确的也改了,没有全部测试,如有误,望大神们不吝赐教! 开发常用命令 查找文件 find / -name filename.txt 根 ...
- linux查看cpt硬盘命令,常用Linux命令、文件操作解压缩相关、Linux命令大全、测试查询...
初学Linux,记录资料,以备留存,亲手测试了一部分,有的正确,不正确的也改了,没有全部测试,如有误,望大神们不吝赐教! 开发常用命令 查找文件 find / -name filename.txt 根 ...
- 善用google搜索,搜索引擎命令大全
原文地址:点击打开链接 搜索引擎命令大全! 1.双引号 把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配.bd和Google 都支持这 ...
- linux搜索指定文件夹里文件是否存在,Linux文件操作之文件查询与搜索命令详解...
文件的查询和搜索也是最常用的操作,在嵌入式 Linux 开发中常常需要在 Linux 源码文件中查询某个文件是否存在,或者搜索哪些文件都调用了某个函数等等.本节我们就讲解两个最常用的文件查询和搜索命令 ...
- Linux命令大全搜索网站模板
介绍: 一款Linux命令大全搜索网站模板,HTML静态模板,可搜索,点击查看详细内容. 当前共搜集了570 多个 Linux 命令,内容包含 Linux 命令手册.详解.学习,内容来自网络和网友的补 ...
最新文章
- Springboot+vue前后端分离考试系统
- 脑电分析系列[MNE-Python-16]| 脑电数据的Epoching处理
- JPA_could not extract ResultSet问题解决
- jQuery构建路由
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1091:求阶乘的和
- java小应用_java小应用
- 云海再获中国第一 OpenStack社区Xena版本新特性快来划重点
- ASP.NET MVC的Razor引擎:IoC在View激活过程中的应用
- Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件
- latex : 系统找不到指定文件问题解决方案
- .Net资源文件全球化
- C++ 从入门到入土(English Version)Section5: Real numbers + bitwise operations
- IOS判断用邮箱登录验证是不是合法的方法
- IT男,程序猿在婚恋市场有多受欢迎?
- 字符多维php递归遍历目录
- Leaflet--建设移动设备友好的互动地图
- centos7系统详细安装步骤
- 函数的支集、支撑集、support、supp
- 抖音短视频的推荐机制是什么? 国仁网络资讯
- 推荐一个好的节拍器软件?3款App帮你成为节奏大师