查询简介

叶子查询子句

叶子查询子句在特定字段中查找特定值,例如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查询搜索命令大全相关推荐

  1. Elasticsearch的搜索命令

    Elasticsearch的搜索命令 文章目录 Elasticsearch的搜索命令 数据准备 URI Search q(查询字符串) analyzer(指定查询字符串时使用的分析器) df(指定查询 ...

  2. oracle表空间查询维护命令大全之二(undo表空间)

    --undo表空间汇总 --查看全部的表空间名字 select name from v$tablespace; --创建新的UNDO表空间,并设置自己主动扩展參数; create undo table ...

  3. 最全的SEO搜索命令整理

    做为一名SEOER其实我们还是要多多学习一些搜引擎的知识,哪怕有的不清楚但是最起码要有个了解.今天就整理了一些很多人没有用过的一些搜索引擎命令,百度高级指令与谷歌高级指令. SEO搜索命令大全 1.双 ...

  4. linux命令大全(完善中)

    bash作为大多数的linux系统的默认字符解析器,所以必须了解bash的优势 1.默认保存历史命令(可以用上下键翻看) 2.命令输入前几位可用tab键补全 3.强大的批量处理脚本 4.实用的环境变量 ...

  5. 常用Linux命令、文件操作解压缩相关、Linux命令大全、测试查询

    初学Linux,记录资料,以备留存,亲手测试了一部分,有的正确,不正确的也改了,没有全部测试,如有误,望大神们不吝赐教! 开发常用命令 查找文件 find / -name filename.txt 根 ...

  6. linux查看cpt硬盘命令,常用Linux命令、文件操作解压缩相关、Linux命令大全、测试查询...

    初学Linux,记录资料,以备留存,亲手测试了一部分,有的正确,不正确的也改了,没有全部测试,如有误,望大神们不吝赐教! 开发常用命令 查找文件 find / -name filename.txt 根 ...

  7. 善用google搜索,搜索引擎命令大全

    原文地址:点击打开链接 搜索引擎命令大全! 1.双引号 把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配.bd和Google 都支持这 ...

  8. linux搜索指定文件夹里文件是否存在,Linux文件操作之文件查询与搜索命令详解...

    文件的查询和搜索也是最常用的操作,在嵌入式 Linux 开发中常常需要在 Linux 源码文件中查询某个文件是否存在,或者搜索哪些文件都调用了某个函数等等.本节我们就讲解两个最常用的文件查询和搜索命令 ...

  9. Linux命令大全搜索网站模板

    介绍: 一款Linux命令大全搜索网站模板,HTML静态模板,可搜索,点击查看详细内容. 当前共搜集了570 多个 Linux 命令,内容包含 Linux 命令手册.详解.学习,内容来自网络和网友的补 ...

最新文章

  1. Springboot+vue前后端分离考试系统
  2. 脑电分析系列[MNE-Python-16]| 脑电数据的Epoching处理
  3. JPA_could not extract ResultSet问题解决
  4. jQuery构建路由
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1091:求阶乘的和
  6. java小应用_java小应用
  7. 云海再获中国第一 OpenStack社区Xena版本新特性快来划重点
  8. ASP.NET MVC的Razor引擎:IoC在View激活过程中的应用
  9. Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件
  10. latex : 系统找不到指定文件问题解决方案
  11. .Net资源文件全球化
  12. C++ 从入门到入土(English Version)Section5: Real numbers + bitwise operations
  13. IOS判断用邮箱登录验证是不是合法的方法
  14. IT男,程序猿在婚恋市场有多受欢迎?
  15. 字符多维php递归遍历目录
  16. Leaflet--建设移动设备友好的互动地图
  17. centos7系统详细安装步骤
  18. 函数的支集、支撑集、support、supp
  19. 抖音短视频的推荐机制是什么? 国仁网络资讯
  20. 推荐一个好的节拍器软件?3款App帮你成为节奏大师

热门文章

  1. python3使用winpcap
  2. 电脑没有音频设备和没有声音的终极解决办法
  3. 如何记账才能一目了然_一目了然
  4. 计算机网络-IP地址
  5. ECMall插件——积分商城 积分兑换
  6. 亚马逊市值突破1万亿美元,过去5年中其股价翻了6倍
  7. 离开WOW的日子里---怀恋盗贼
  8. C++typename的由来和用法
  9. 记录一下上次安装Burpsuite的曲折经历
  10. 番茄花园 Ghost XP SP3 电脑城快速装机安全版 2011年6月