Elasticsearch基本查询及组合查询实例分析
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍"Elasticsearch基本查询及组合查询实例分析",在日常操作中,相信很多人在Elasticsearch基本查询及组合查询实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好
千家信息网最后更新 2025年01月19日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}#从第一条开始,大小为2
1.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安全错误
数据库的锁怎样保障安全
响水县网络安全与信息化委员会
还原mdf数据库文件
辽宁省网络安全条例
怎样用数据库打开无线网络
简述数据库建设的基本流程
三维设计软件开发用什么语言
华为服务器插上网线没有识别
云丁网络技术有限公司 背景
隧道算服务器吗
网络安全责任制自查自评
湖南ios手机软件开发
儿童网络安全原创视频
redis 连接数据库
网络安全审计 备案
城市四级联动数据库
k线均线用什么软件开发
要不要建一个数据库
网络安全个股异动
中国电脑服务器是谁研发的
数据库fields
乳腺癌数据库作为博士学位
中心网络安全自查报导
数据库查询性能分析
三维设计软件开发用什么语言
常州品牌软件开发
数据库管理与开发慕课版题库
期刊安装数据库
nas的服务器
广州知识管理软件开发
网络技术网络社会