默认是全部field进行搜索_all ; 可以明确指定某个field;支持分词等
1、matchQuery
查询的内容会通过分词,分词后的数据进行检索。只要包含其中一个分词就会被检索出来
QueryBuilders.matchQuery("hotelName", "test林");
2、matchPhraseQuery
查询的内容会严格经过分词。严格按照分词的出现的顺序进行查询,也就是必须包含所有分词,且出现数据一致,
QueryBuilders.matchPhraseQuery("hotelName", "智售试酒").slop(2)
总结:
是否分词后查询,前提(查询的字段是进行分词索引的,如果不是分词索引则不生效)
例如 hotelName 包含值: 'test' 'test three' 'three' 'test one three' '林test' 'test yang three'
查询短语为 test three
matchQuery : 能够查询出来 全部内容
mathPhraseQuery :只能够查询出来 test three 这一个数据 因为'test yang three' 三个词包含了 'test' 和 'three' 但是他们之间有一个 'yang'这个分词所以没匹配上
那如何让查询也把'test yang three'呢?
slop(1),1含义是两个分词之间可以最多还有其他1个分词,这时就能够查询到'test yang three'
如果想也查询到'test yang ss three' slop则应该slop(2)
其他参数可以自己摸索,如设置分词器等。设置operator and或者or 控制分词的查询的关系
//分词后AND关系,必须同时包含所有分词
QueryBuilders.matchQuery("hotelName","test林").operator(MatchQueryBuilder.Operator.AND)
//分词后OR关系,至少包含一个分词
QueryBuilders.matchQuery("hotelName","test林").operator(MatchQueryBuilder.Operator.OR)
、multi-match query
多字段检索,检索相同的内容
type对内容相关度会有一定的影响,根据你的应用场景来分析你的查询写法
type 默认是 best_fields
best_fields :score为匹配的字段的最大值;
most_fields :score为每个字段分值的总和;
cross_field :score为将字段合并为一个整个大字段,获得的分值
QueryBuilders.multiMatchQuery("beijing test","hotelName","hotelNo").operator(MatchQueryBuilder.Operator.OR)
高级查询
一种略高级的查询,充分考虑了stop-word的低优先级,提高了查询精确性。他将查询短语分词,将分词后的term分为高频词和低频词
高频词(也可以理解为stopwords)比如 的,个,是 ;英文的 the is 等 无意义且出现频率极高的词
低频词 就是我们要时间查询的词,比如酒店 宾馆等
查询过程:通过匹配低频词检索出我们需要的数据,然后在这个基础上继续匹配高频词,既能完成检索数据又能充分匹配高频词
因为我们可能搜索词 happy 和 not happy 如果不匹配高频词 搜索的结果将会是一样的 显然这不是我们需要的
举例如果想要能够匹配如下 "hotelName":"新增的第一个酒店"
QueryBuilders.commonTermsQuery("hotelName","的酒个店").cutoffFrequency(0.001f)
cutoffFrequency 设置高频词的score因子
5、query string
默认是全部field进行搜索_all ; 可以明确指定某个field;支持分词等
QueryString 被分词 默认分词之间是OR 关系, 支持 AND OR 来决定每个term之间的关系;同时 支持通配符,正则 等操作
如下查询 hotelName 字段 查询 QueryString 为 "四 AND 酒 AND 店 " 查询结果是 hotelName 同时包含 "四" "酒" "店" 如果不明确 AND 则是OR的关系,包含任意一个term即被命中
QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("四 AND 酒 AND 店 ").defaultField("hotelName");
simple query string
简单查询
支持符号操作,不像query string那样支持正则等表达式
支持的符号如: + 表示 AND , | 表示 OR , - 表示 否 还有其他支持符号就查看文档吧
flag 明确指定支持的符号有哪些,
查询 hotelName 字段 查询 simpleQueryString 为 "四+酒+店 " 查询结果是 hotelName 同时包含 "四" "酒" "店"
QueryBuilders.simpleQueryStringQuery("四+酒+店").field("hotelName")
下面看下flag 的作用,flag 明确指明 支持OR操作,此时 + 不生效,三个词是默认的 OR关系
QueryBuilders.simpleQueryStringQuery("四+酒+店").field("hotelName").flags(SimpleQueryStringFlag.OR)
分享到:
相关推荐
**Elasticsearch插件Delete-by-Query详解** 在Elasticsearch中,删除操作通常是针对单个文档进行的,但有时我们需要删除满足特定条件的一大批文档。这时,`Delete-by-Query`插件就显得尤为重要。它允许我们通过一个...
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
多弹性搜索头,对著名的 Elasticsearch Head 的改进 1.保存和存储几个Elasticsearch端点 2.索引选项卡中的更多列 3. 任何请求现在都可以像 /_cat/indices 一样处理 JSON 返回 4. 更简约的外观(更小的字体等...) ...
适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...
Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,...
根据提供的文件信息,我们可以推断出本篇文章将围绕Elasticsearch 6.2.2版本进行详细介绍,包括其下载方式、主要功能特性以及在实际应用中的常见用途。 ### Elasticsearch简介 Elasticsearch是一款基于Lucene的...
Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据检索、分析和管理。作为分布式、RESTful风格的搜索和数据分析引擎,Elasticsearch能够提供实时、高可用性以及可扩展的搜索功能。在进行日常的数据...
Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene构建,提供了分布式、RESTful风格的搜索和分析引擎服务。在中文环境下,为了实现精确的分词和搜索,我们需要安装适合版本的分词插件,如“elastic...
**Elasticsearch 8.11 for Windows** Elasticsearch 是一个开源的分布式搜索引擎,以其高可伸缩性、实时性、灵活性以及强大的数据分析能力而闻名。在Windows平台上部署Elasticsearch,用户可以利用其强大的搜索和...
`start` 用于启动Elasticsearch,这里使用 `su` 命令切换到指定的Elasticsearch用户(例如 `es-admin`),然后进入Elasticsearch的安装目录并执行 `bin/elasticsearch` 文件以后台模式启动服务。`stop` 通过查找并杀...
5. **查询接口设计**:利用 Elasticsearch 的 Query DSL 设计查询接口,支持多种查询条件和组合。 6. **结果排序与聚合**:实现搜索结果的排序和聚合统计,以提供更丰富的查询结果展示。 7. **监控与调优**:通过 ...
Elasticsearch是一款基于Lucene的开源搜索引擎,它使用RESTful接口进行数据操作,数据以JSON格式存储。Elasticsearch以其高效的全文搜索功能,实时数据处理能力,以及易于使用的特性,在众多企业中得到了广泛应用,...
es-head是一个针对Elasticsearch的可视化操作插件。它提供了一个便捷的操作工具,可以连接Elasticsearch搜索引擎,并提供可视化的操作页面,对Elasticsearch进行各种设置和数据检索功能的管理。 es-head 插件可以在...
Elasticsearch 7.14.0 是一个高度可扩展的全文搜索引擎,广泛应用于日志分析、实时数据分析和全文检索等多个领域。这个压缩包包含了针对Windows和Linux操作系统的安装包,便于在不同环境下部署和使用Elasticsearch。...
3. **ES识别的命令**:ES是Elasticsearch的缩写。Elasticsearch有自己的RESTful API,用于索引、搜索、分析和管理数据。通过Elasticsearch-Hadoop,用户可以在Hadoop环境中使用这些API,实现对Elasticsearch集群的...
2. **下载安装包**:这里的"es安装包"即为Elasticsearch的安装文件,通常是一个zip或tar.gz格式的压缩包。你需要从官方网站或者镜像站点下载对应版本的安装包,确保与你的系统兼容。 3. **解压安装**:下载完成后,...
Elasticsearch是一个强大的开源搜索引擎,基于Apache Lucene构建,它为开发者和数据分析师提供了高效、可扩展、实时的搜索和分析功能。6.8.18版本是Elasticsearch的一个稳定版本,它在前几个版本的基础上进行了优化...
在数据抽取 ELT 领域,ES 全家桶 ELK(Elasticsearch+Logstash+Kibana)赫赫有名。 Elasticsearch 基本概念: * 倒排索引:Elasticsearch 为什么快,核心设计理念就是采用了倒排索引机制。倒排索引的方式是,根据 ...
Elasticsearch 8.14.1 是一个高度可扩展的开源全文检索和分析引擎,专为分布式环境设计。它允许开发者和系统管理员快速、高效地存储、搜索和分析大量数据。Elasticsearch 广泛应用于日志分析、信息检索、网站搜索、...
这个名为"基于.netcore搜索封装ElasticSearch.zip"的压缩包,显然包含了一个针对.NET Core平台的Elasticsearch客户端库,方便开发者在.NET Core应用中集成和操作Elasticsearch。 Elasticsearch是一个开源的分布式...