Elasticsearch基本查询及组合查询实例分析
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要介绍"Elasticsearch基本查询及组合查询实例分析",在日常操作中,相信很多人在Elasticsearch基本查询及组合查询实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2025年11月11日Elasticsearch基本查询及组合查询实例分析
这篇文章主要介绍"Elasticsearch基本查询及组合查询实例分析",在日常操作中,相信很多人在Elasticsearch基本查询及组合查询实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Elasticsearch基本查询及组合查询实例分析"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
Elasticsearch查询
查询分类:
基本查询:使用es内置查询条件进行查询
组合查询:把多个查询组合在一起进行复合查询
过滤:查询的同时,通过filter条件在不影响打分的情况下筛选数据
一 基本查询
#添加映射PUT lago{ "mappings": { "properties":{ "title":{ "stort":true, "type":"text", "analyzer":"ik_max_word" }, "company_name":{ "stort":true, "type":"keyword", }, "desc":{ "type":"text" }, "comments":{ "type":"integer" }, "add_time":{ "type":"date", "format":"yyy-MM-dd" } } }}#测试数据POST lago/job{ "title":"python django 开发工程师", "company_name":"美团科技有限公司", "desc":"对django熟悉,掌握mysql和非关系型数据库,网站开发", "comments:200, "add_time":"2018-4-1"}POST lago/job{ "title":"python数据分析", "company_name":"百度科技有限公司", "desc":"熟悉python基础语法,熟悉数据分析", "comments:5, "add_time":"2018-10-1"}POST lago/job{ "title":"python自动化运维", "company_name":"上海华为", "desc":"熟悉python基础语法,精通Linux", "comments:90, "add_time":"2019-9-18"}1.1 match查询
GET lagou/job/_search{ "query":{ "match":{ "title":"python" } }}#因为title字段做了分词,python都能搜索出来#搜索python网站也能搜索出来,把python和网站分成两个词#搜索爬取也能搜索到,把爬和取分词,去搜索#只搜取 搜不到1.2 term查询
GET lagou/_search{ "query":{ "term":{ "title":"python" } }}#会拿着要查询的词不做任何处理,直接查询#用python爬虫,查不到,用match就能查到{ "query":{ "term":{ "company_name":"美团" } }}#通过美团,就查询不到1.3 terms查询
GET lagou/_search{ "query":{ "terms":{ "title":["工程师","django","运维"] } }}#三个词,只要有一个,就会查询出来1.4 控制查询的返回数量(分页)
GET lagou/_search{ "query":{ "match":{ "title":"python" } }, "form":1, "size":2}#从第一条开始,大小为21.5 match_all 查询
GET lagou/_search{ "query":{ "match_all":{} }}#所有数据都返回1.6 match_phrase查询
GET lagou/_search{ "query":{ "match_phrase":{ "title":{ "query":"python系统", "slop":6 } } }}#短语查询, #会把查询条件python和系统分词,放到列表中,再去搜索的时候,必须满足python和系统同时存在的才能搜出来#"slop":6 :python和系统这两个词之间最小的距离1.7 multi_match
GET lagou/_search{ "query":{ "multy_match":{ "query":"python", "fields":["title","desc"] } }}#可以指定多个字段#比如查询title和desc这个两个字段中包含python关键词的文档#"fields":["title^3","desc"]:权重,title中的python是desc中的三倍1.8 指定返回的字段
GET lagou/_search{ "query":{ "stored_fields":["title","company_name"] "match":{ "title":"python" } }}#只返回title和company_name字段#"stored_fields":["title","company_name",'dsc'],不会返回dsc,因为我们要求stroed_fields,之前desc字段设为false(默认),不会显示1.9 sort 结果排序
GET lagou/_search{ "query":{ "match_all":{} }, "sort":[ { "comments":{ "order":"desc" } } ]}#查询所有文档,按comments按desc降序排序1.10 range范围查询
GET lagou/_search{ "query":{ "range":{ "comments":{ "gte":10, "lte":20, "boost":2.0 } } }}#指定comments字段大于等于10,小于等于20#boost:权重GET lagou/_search{ "query":{ "range":{ "add_time":{ "gte":"2019-10-11", "lte":"now", } } }}#对时间进行查询1.11 wildcard查询
GET lagou/_search{ "query":{ "wildcard":{ "title":{ "value":"pyth*n", "boost":2.0 } } }}#模糊查询,title中,有pyth任意值n得都能查出来1.12 exists存在
exists:字段包含,存在的# 包含followers_count字段GET user_toutiao/_search{ "query": { "bool": { "must": [ {"exists": { "field": "followers_count" }} ] } }}# 不包含followers_count字段GET user_toutiao/_count{ "query": { "bool": { "must_not": [ {"exists": { "field": "followers_count" }} ] } }}# 不包含followers_count且updata_timestamp>1614221216GET user_toutiao/_count{ "query": { "bool": { "must_not": [ { "exists": { "field": "followers_count" } } ], "must": [ {"range": { "updata_timestamp": { "gt": 1614221216 } }} ] } }}二 组合查询
2.1 bool查询
#bool查询包括must should must_not filter'''bool:{ "filter":[], 字段过滤 "must":[], 所有查询条件都满足 "should":[], 满足一个或多个 "must_not":{} 都不满足于must相反}'''# 建立测试数据POST lago/testjob/_bulk{"index":{"_id":1}}{"salary":10,"title":"Python"}{"index":{"_id":2}}{"salary":20,"title":"Scrapy"}{"index":{"_id":3}}{"salary":30,"title":"Django"}{"index":{"_id":4}}{"salary":30,"title":"Elasticsearch"}2.2 简单过滤查询
#select * from testjob where salary=20GET lagou/testjob/_search{ "query":{ "bool":{ "must":{ "match_all":{} }, "filter":{ "term":{ "salary":20 } } } }}2.3 查询多个值
#查询薪资是10k或20k的GET lagou/testjob/_search{ "query":{ "bool":{ "must":{ "match_all":{} }, "filter":{ "terms":{ "salary":[10,20] } } } }}#select * from testjob where title="python"GET lagou/testjob/_search{ "query":{ "bool":{ "must":{ "match_all":{} }, "filter":{ "term":{ "title":"Python" } } } }}#title 是text字段,会做大小写转换,term不会预处理,拿着大写Python去查查不到#可以改成小写,或者用match来查询''' "filter":{ "match":{ "title":"Python" } }'''#查看分析器解析结果GET _analyze{ "analyzer":"ik_max_word", "text":"python网络开发工程师"}2.4 bool过滤查询,可以做组合过滤查询
#select * from testjob where (salary=20 or title=Python) and (salary!=30)#查询薪资等于20k或者工作为python的工作,排除价格为30k的{ "query":{ "bool":{ "should":[ {"term":{"salary":20}}, {"term":{"title":"python"}} ], "must_not":{ "term":{"salary":30} } } }}#select * from testjob where title=python or (title=django and salary=30){ "query":{ "bool":{ "should":[ {"term":{"title":"python"}}, { "bool":{ "must":[ {"term":{"title":"django"}}, {"term":{"salary":30}} ] } } ] } }}到此,关于"Elasticsearch基本查询及组合查询实例分析"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
查询
字段
组合
分析
数据
搜索
实例
实例分析
多个
条件
系统
网站
学习
两个
工程
工程师
开发
公司
同时
基础
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
有服务器ip怎么连接
网络安全概论 pdf
计算机网络技术运用现状分析
微根门禁数据库密码
网络安全企业的使命论述
计算机网络安全 百度云盘
东营市妇联网络安全宣传
上海智能网络技术开发操作
建模软件开发需要多少钱
临沧菩步网络技术有限公司
护苗网络安全课1 5视频
数据库自动化学习网站
阿里云服务器上传网址教程
mysql数据库数据文件
商品管理系统数据库大作业
创意工坊未找到专属服务器
web服务器怎么接三层交换机
软件开发语言有哪些dom
10美元永久服务器
医保网络安全工作方案
泰坦陨落2服务器无法连接
wms软件开发项目进度研究
网络安全仿真实验报告
江苏服务器散热器厂商云空间
ucsc 数据库
虚拟网络技术 答辩ppt
委托软件开发在哪个科目核算
软件开发投标废标条件
战地4的服务器怎么管理
高级网络技术开发