SearchType 案例_介绍 | 学习笔记

简介: 快速学习 SearchType 案例_介绍

开发者学堂课程【ElasticSearch 入门精讲SearchType 案例_介绍学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/631/detail/10001


SearchType 案例_介绍


1、查询所有

matchAllQuery()匹配所有文件

match_all 查询是 Elasticsearch 中最简单的查询之一。它使我们能够匹配索引中的所有文件。 SearchReaSearchResponse searchResponse = client.prepareSearch("blog2”).setTypes("article").setQuery(QueryBuilders.matchAllQuery()).get();

SearchHits hits = searchResponse.getHits0;//获取命中次数,查询结果有多少对象

2、解析查询字符串

相比其他可用的查询,query_string 查询支持全部的 Apache Lucene 查询语法

针对多字段的 query_string 查询SearchResponse searchResponse = client.prepareSearch("blog2"),setTypes("article")

.setQuery(QueryBuilders.queryStringQuery("全面")).get();

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

3、通配符查询(wildcardQuery)

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

注意:避免*开始,会检索大量内容造成效率缓慢 SearchResponse searchResponse = client.prepareSearch("blog2").setTypes("article")

.setQuery(QueryBuilders.wildcardQuery("content","elas*c?")).get();

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

4、词条查询(termQuery)

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

termQuery("key", obj)完全匹配

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

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

//.setQuery(QueryBuilders.termQuery("content","搜索")).get(); SearchResponse searchResponse = client,prepareSearch("blog2").setTypes("article")

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

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

5、字段匹配查询 

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

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

multiMatchQuery("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("搜索","title","content")).get();

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

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

标识符查询是一个简单的查询,仅用提供的标识符来过滤返回的文档。此查询针对内部的 _uid字段运行,所以它不需要启用_id 字段 SearchResponse searchResponse = client.prepareSearch("blog2").setTypes("article")

.setQuery(QueryBuilders.idsQuery().ids("1")).get();

SearchHits hits = searchResponse.getHits0;//获取命中次数,查询结果有多少对象

7、相似度查询

fuzzy 查询是模糊查询中的第三种类型,它基于编辑距离算法来匹配文档 SearchResponse searchResponse = client.prepareSearch("blog2").setTypes("article").setQuery(QueryBuilders.fuzzyQuery("content","elasticsegrxx")).get();

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

8、范围查询

范围查询使我们能够找到在某一字段值在某个范围里的文档,字段可以是数值型,也可以是基于字符串的 SearchResponse searchResponse = client.prepareSearch("blog2").setTypes("article")

.setQuery(QueryBuilders.rangeQuery("content").from("我们").to("解决方案").includeLower(true).includeUpper(true)).get();

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

includeLower(true):包含上界

IncludeUpper(true):包含下界

9、跨度查询

下面代码表示,从首字母开始,查询 content 字段=问题的数据,问题前面的词为300个,可以测试30看是否能查询出数据。 SearchResponse searchResponse = client.prepareSearch("blog2").setTypes("article").setQuery(QueryBuilders.spanFirstQuery(QueryBuilders.spanTermQuery("content","问题"), 300)).get();

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

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

must(QueryBuilders):AND

mustNot(QueryBuilders): NOT

should(QueryBuilders):OR 

在定义 json:放置到 Elasticsearch 的播件中 SearchResponse searchResponse = client.prepareSearch("blog2").setTypes("article").setQuery(QueryBuilders.boolQuery().must(QueryBuilders.termQuery("title","搜索")).must(QueryBuilders.wildcardQuery("content","elastic*ch")).get();

SearchHits hits = searchResponse.getHits();//获取命中次数,查询结果有多少对象

11、排序查询 SearchResponse searchResponse = client,prepareSearch("blog2"),.setTypes("article")

.setQuery(QueryBuilders.matchAllQuery())

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

SearchHits hits = SearchResponse.getHits();//获取命中次数,查询结果有多少对象

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
测试技术
你真的知道什么是冒烟测试吗?
大家好,我是阿萨。日常工作中,经常都会提到冒烟测试。那么什么是冒烟测试呢?
3705 0
你真的知道什么是冒烟测试吗?
|
机器学习/深度学习 人工智能 算法
机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样
机器学习笔试面试之图像数据不足时的处理方法、检验方法、不均衡样本集的重采样
434 0
|
6月前
|
数据采集 人工智能 并行计算
惊了!Hugging Face 这款开源 TTS 能情感自由切换,Parler‑TTS 斩获 5.3K star,支持 34 角色+实时风格自定义,开源 TTS 新标杆
Hugging Face 开源轻量级 TTS 模型 Parler-TTS,支持情感自由切换、34 种说话人选择及实时风格自定义。提供 Mini 与 Large 两个版本,训练数据丰富,生成语音自然高质量,适配多种应用场景,助力高效语音开发。
448 1
|
人工智能 运维 Kubernetes
智能化运维:KoPylot为k8S带来AI监控诊断
智能化运维:KoPylot为k8S带来AI监控诊断
|
机器学习/深度学习 数据中心 芯片
【AI系统】谷歌 TPU 历史发展
本文详细介绍了谷歌TPU的发展历程及其在AI领域的应用。TPU是谷歌为加速机器学习任务设计的专用集成电路,自2016年首次推出以来,经历了多次迭代升级,包括TPU v1、v2、v3、v4及Edge TPU等版本。文章分析了各代TPU的技术革新,如低精度计算、脉动阵列、专用硬件设计等,并探讨了TPU在数据中心和边缘计算中的实际应用效果,以及谷歌如何通过TPU推动移动计算体验的进步。
842 1
【AI系统】谷歌 TPU 历史发展
|
网络协议 程序员 数据库
什么是公网IP和内网IP
【10月更文挑战第27天】公网IP与内网IP是网络通信中的两个重要概念。公网IP是互联网上的唯一标识,而内网IP仅在局域网内部有效,用于局域网内的设备通信。由于IPv4地址资源有限,通常一个公司或家庭只有一个公网IP,内部设备通过NAT(网络地址转换)技术共享该公网IP访问互联网。这样不仅节省了IP资源,还提高了网络安全性和稳定性。
1157 0
|
Dubbo Java 应用服务中间件
双活工作下的数据迁移:Nacos注册中心实战解析
这篇内容介绍了如何使用NacosSync组件进行双活项目中的注册中心数据迁移。首先,准备包括64位OS、JDK 1.8+、Maven 3.2+和MySQL 5.6+的环境。接着,获取并解压NacosSync安装包,配置数据库连接,启动服务,并通过访问特定URL检查系统状态。然后,通过NacosSync控制台进行集群配置,添加Zookeeper和Nacos集群,并设置同步任务。当数据同步完成后,Dubbo客户端(Consumer和Provider)更新配置以连接Nacos注册中心。最后,迁移完成后,原有的Zookeeper集群可下线,整个过程确保了服务的平滑迁移。
560 1
|
存储 缓存 JSON
Go Modules:Go语言依赖管理的新篇章
Go Modules是Go 1.11引入的依赖管理标准,解决`GOPATH`的依赖冲突问题。
311 1
|
存储 关系型数据库 MySQL
linux环境安装8.0以上版本的MySQL详细教程(亲测好用)
linux环境安装8.0以上版本的MySQL详细教程(亲测好用)
2006 0
|
存储 监控 安全
保护企业财产:ERP系统的安全与数据保护策略
保护企业财产:ERP系统的安全与数据保护策略
1000 0