Query 概述|学习笔记

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 快速学习 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();

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

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
18天前
|
SQL 数据库管理
第二章:基础查询与排序---SQL学习笔记
第二章:基础查询与排序---SQL学习笔记
60 0
|
SQL Java 数据库连接
Statement 接口简介|学习笔记
快速学习 Statement 接口简介
269 0
Statement  接口简介|学习笔记
|
18天前
|
SQL 自然语言处理 关系型数据库
NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]
NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]
NL2SQL进阶系列(3):Data-Copilot、Chat2DB、Vanna Text2SQL优化框架开源应用实践详解[Text2SQL]
|
18天前
|
SQL 关系型数据库 数据库
第三章:复杂一点的查询--SQL学习笔记
第三章:复杂一点的查询--SQL学习笔记
70 0
|
SQL 存储 监控
【MySQL从入门到精通】【高级篇】(二十三)EXPLAIN的概述与table,id字段的剖析
上一篇文章我们介绍了【MySQL从入门到精通】【高级篇】(二十二)慢查询日志分析,SHOW PROFILE查看SQL执行成本,这篇文章我们接着来介绍一下MySQL中一个非常重要的命令 EXPLAIN。当我们定位到查询慢的SQL之后,我们就可以使用EXPLAIN或DESCRIBE工具做针对性的分析查询语句。 DESCRIBE 语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。
162 0
【MySQL从入门到精通】【高级篇】(二十三)EXPLAIN的概述与table,id字段的剖析
|
SQL 程序员
【Sql Server】基础面试题解答之查询每门课程都及格的学生名称
1)查询每门课程都及格的学生名称 2)分组概念的使用
265 0
【Sql Server】基础面试题解答之查询每门课程都及格的学生名称
|
JSON 算法 数据格式
Query 概述|学习笔记
快速学习 Query 概述。
109 0
|
JSON 算法 Apache
Query 概述 | 学习笔记
快速学习 Query 概述
106 0
|
SQL 关系型数据库 MySQL
开发指南—常见问题—INDEX HINT
PolarDB-X支持全局二级索引(Global Secondary Index,简称GSI) ,您可以通过INDEX HINT命令指定从GSI中获取查询结果。
|
SQL 分布式计算 Spark
Spark SQL快速入门(进阶)(上)
Spark SQL快速入门(进阶)(上)
256 0
Spark SQL快速入门(进阶)(上)