Elasticsearch基本查询及组合查询实例分析
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Elasticsearch基本查询及组合查询实例分析",在日常操作中,相信很多人在Elasticsearch基本查询及组合查询实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
互联网科技公司
互联网科技海报
新华互联网科技
厦门中拓互联网络科技有限公司
美国互联网科技巨头监管
互联网 科技创业
鑫亿盛互联网科技
小马过河互联网科技
伴你行互联网科技有限公司
齐家互联网科技有限公司
多迪互联网科技有限公司
互联网科技素材视频竖屏
甘肃拓世互联网科技有限公司
青海省互联网新科技
深圳前海聚择互联网科技有限公司
互联网与医疗科技
搜狐科技互联网
卡尔迅互联网科技有限公司
互联网科技创新创业项目
重庆科技产业互联网有哪些
伟宏互联网科技
厦门中拓互联网络科技有限公司
互联网扶贫科技
互联网未来科技
丰台科技园 互联网
奔汉互联网科技
朱啸虎曾投资哪些互联网科技企业
互联网金融运营模式中的金融科技
高科技和互联网的现代国家
武汉亿视互联网科技有限公司