Query 概述|学习笔记

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 快速学习 Query 概述。

开发者学堂课程【ElasticSearch 最新快速入门教程 Query 概述】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/642/detail/10651


Query 概述

 

内容介绍:

一、查询所有

二、解析查询字符串

三、通配符查询

四、词条查询

五、字段匹配查询

六、只查询 ID

七、相似度查询

八、范围查询

九、跨度查询

十、组合查询

十一、排序查询

 

一、查询所有

matchAllQuery() 匹配所有文件

match_all 查询是 Elasticsearch 中最简单的查询之一。它使我们能够匹配索引中的所有文件

SearchResponse searchResponse = client.prepareSearch(blog2")

.setTypes(article")

.setQuery(QueryBuilders.matchllQuery())

.get();

SearchHits hits=searchResponse.getHits();

//获取命中次数,查询结果有多少对象

 

二、解析查询字符串

相比其他可用的查询,query_string 查询支持全部的

ApacheLucene 查询语法

针对多字段的 query_string 查询

SearchResponse searchResponse = client.prepare

Search("blog2").setTypes(article")

.setQuery(QueryBuilders.queryStringQuery(")geto:

SearchHitshits = searchResponse.getHits();

//获取命中次数,查询结果有多少对象

 

三、通配符查询(wildcardQuery)

*匹配多个字符,?匹配1个字符

注意:避免*开始,会检索大量内容造成效率缓慢

SearchResponse searchResponse = client.prepare

Search("blog2"setTypes(article")

.setQuery(QueryBuilders.wildcardQuery(content”,”elas*c?”)

SearchHits hits = searchResponse.getHits();

//获取命中次数,查询结果有多少对象

 

四、词条查询(termQuery)

词条查询是 Elasticsearch 中的一个简单查询。它仅匹配在给定字段中含有该词条的文档,而且是确切的、未经分析的词条

termQuery("key,obj)完全匹配

termsQuery("key"j 一次匹配多个值,只要有一个值是正确的,就可以查询出数据

SearchResponse searchResponse =  clientprepareSearch

("blog2".setTypes(article")

.setQuery(QueryBuilders.termQuery(“content”,”搜索”)).get();

SearchResponse searchResponse = client.prepareSearch(“blog2".setTypes(“article")

.setQuery(QueryBuilders.termsQuery("content””搜索””全文”.get();

SearchHits hits = searchResponse.getHits();

//获取命中次数,查询结果有多少对象

 

五、字段匹配查询

matchQuery("key.obj)单个匹配,field 不支持通配符,前缀具高级特性

match 查询把 query 参数中的值拿出来,加以分析,然后构建相应的查询。使用 match 查询时,Elasticsearch 将对一个字段选择合适的分析器,所以可以确定传给 match 查询的词条将被建立索引时相同的分析器处理。

multimMatchQuery("text"field1"field2");匹配多个字段,field 有通配符查询功能

SearchResponse searchResponse = client.prepareSearch

("blog2").setTypes(article")

setQuery(QueryBuilders.matchQuery("content”“索”get();

SearchResponse searchResponse = client.prepareSearch

("blog2").setTypes(article")

setQuery(QueryBuilders.multiMatchQuery(“搜索“)).get();

SearchHits hits = searchResponse.getHits();

//获命中次数,查询结果有多少对象

 

六、只查询 ID(标识符查询)

标识符查询是一个简单的查询,仅用提供的标识符来过滤返回的文档。此查询针对内部的 uid 学段运行,所以它不需要启用 id 学段

SearchResponse searchResponse = client.prepareSearch

("blog2")setTypes(article")

setQuery(QueryBuilders.idsQuery0.ids1"get

SearchHitshits=searchResponse.getHits();

//获取命中次数,查询结果有多少对象

 

七、相似度查询

fuzzy 查询是模糊查询中的第三种类型,它基于编辑距离算法来匹配文档

SearchResponse searchResponse = client.prepareSearch

(blog2").SetTypes(article")

.setQuery(QueryBuilders.fuzzyQuery(content

SearchHits hits = searchResponse.getHits();

//获取命中次数,查询结果有多少对象

 

八、范围查询

查询使我们能够找到在某一字段值在某个范围里的文档,字段可以是数值型,也可以是基于字符串的

SearchResponsesearchResponse=clientprepareSearch

("blog2").setTypes(article")

.setQuery(QueryBuilders.rangeQuery(content).from(我们”.t(解决方案).

includeLower(true).includeUpper(true).get();

SearchHits hits = searchResponse.getHits();

//获取命中次数,查询结果有多少对象

includeLower(true):包含上界

IncludeUpper(true):包含下界

 

九、跨度查询

下面代码表示,从首字母开始,查询 content 字段=问题的数据,问题前面的词为300个,可以测试30看是否能查询出数据

SearchResponse searchResponse=client.prepareSearch

("blog2").setTypes(article")

.setQuery(QueryBuilders.spanFirstQuery(QueryBuilders.spanTermQuery(“content”,“问题”) ,300)).get();

SearchHits hits=searchResponse.getHits();

//获取命中次数,查询结果有多少对象

 

十、组合查询(复杂查询)

must(QueryBuilders):AND

mustNot(QueryBuilders):NOT

should(QueryBuilders):OR

在定义 json:放置到 Elasticsearch 的插件中

SearchResponse searchResponse=clientprepareSearch

(blog2"setTypes(article)

.setQuery(QueryBuilders.boolQuery0.mustQueryBuilderstemQuerytitl

搜索”.must(QueryBuilders.wildcardQuery(content”) 

SearchHits hits = searchResponse.getHits();

//获取命中次数,查询结果有多少对象

 

十一、排序查询

SearchResponse searchResponse = client.prepareSearch

("blog2").setTypes(article")

setQuery(QueryBuilders.matchAllQuery())

.addSort("id",SortOrder.DESC).grt();

SearchHits hits = searchReponse.getHits();

//获取命中次数,查询结果有多少对象

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
JSON 数据格式
【异常】com.alibaba.fastjson.JSONException: unclosed string : U
【异常】com.alibaba.fastjson.JSONException: unclosed string : U
2620 0
|
10月前
|
监控 安全 Linux
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
305 1
|
机器学习/深度学习 存储 自然语言处理
天啊!深度神经网络中 BNN 和 DNN 基于存内计算的传奇之旅,改写能量效率的历史!
【8月更文挑战第12天】深度神经网络(DNN)近年在图像识别等多领域取得重大突破。二进制神经网络(BNN)作为DNN的轻量化版本,通过使用二进制权重和激活值极大地降低了计算复杂度与存储需求。存内计算技术进一步提升了BNN和DNN的能效比,通过在存储单元直接进行计算减少数据传输带来的能耗。尽管面临精度和硬件实现等挑战,BNN结合存内计算代表了深度学习未来高效节能的发展方向。
225 1
|
弹性计算 定位技术
阿里云服务器地域和可用区公有云/金融云/政务云分布表
阿里云服务器地域和可用区分布表(公有云/金融云/政务云),阿里云服务器地域北京上海杭州深圳等节点,地域是指云服务器所在地理位置,可用区用字母可用区ABCD命名,可用区是指同一个地域下电力和网络相互独立的区域。阿里云基础设施分为公有云、金融云和政务云
1365 1
阿里云服务器地域和可用区公有云/金融云/政务云分布表
|
Linux 网络安全 C语言
在服务器上 运行Django 项目,报错解决方案
在服务器上 运行Django 项目,报错解决方案
|
5天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
4天前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
|
4天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
Linux 虚拟化 iOS开发
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
1022 0