`

Elasticsearch FullText Query

阅读更多
默认是全部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中,删除操作通常是针对单个文档进行的,但有时我们需要删除满足特定条件的一大批文档。这时,`Delete-by-Query`插件就显得尤为重要。它允许我们通过一个...

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战)

    (狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...

    ES客户端+谷歌浏览器插件+Multi-Elasticsearch-Head

    多弹性搜索头,对著名的 Elasticsearch Head 的改进 1.保存和存储几个Elasticsearch端点 2.索引选项卡中的更多列 3. 任何请求现在都可以像 /_cat/indices 一样处理 JSON 返回 4. 更简约的外观(更小的字体等...) ...

    7.17.1系列Elasticsearch的elasticsearch-analysis-ik分词器

    适用于7.17.1系列,例如Elasticsearch的7.17.12版本。 elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个...

    elasticsearch 8.11.3 windows安装包

    Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elasticsearch 中。Kibana 使您能够以交互方式探索、可视化和分享对数据的见解,...

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    根据提供的文件信息,我们可以推断出本篇文章将围绕Elasticsearch 6.2.2版本进行详细介绍,包括其下载方式、主要功能特性以及在实际应用中的常见用途。 ### Elasticsearch简介 Elasticsearch是一款基于Lucene的...

    ES查询客户端,elasticsearch可视化工具 elasticsearch查询客户端

    Elasticsearch(简称ES)是一款强大的开源搜索引擎,广泛应用于数据检索、分析和管理。作为分布式、RESTful风格的搜索和数据分析引擎,Elasticsearch能够提供实时、高可用性以及可扩展的搜索功能。在进行日常的数据...

    elasticSearch(ES)最新版 ik分词插件7.10 elasticsearch-analysis-ik-7.10.0

    Elasticsearch(ES)是一种流行的开源全文搜索引擎,它基于Lucene构建,提供了分布式、RESTful风格的搜索和分析引擎服务。在中文环境下,为了实现精确的分词和搜索,我们需要安装适合版本的分词插件,如“elastic...

    Windows版本(8.11)ElasticSearch、elasticsearch-head、kibana、IK分词

    **Elasticsearch 8.11 for Windows** Elasticsearch 是一个开源的分布式搜索引擎,以其高可伸缩性、实时性、灵活性以及强大的数据分析能力而闻名。在Windows平台上部署Elasticsearch,用户可以利用其强大的搜索和...

    Elasticsearch 开机自启脚本

    `start` 用于启动Elasticsearch,这里使用 `su` 命令切换到指定的Elasticsearch用户(例如 `es-admin`),然后进入Elasticsearch的安装目录并执行 `bin/elasticsearch` 文件以后台模式启动服务。`stop` 通过查找并杀...

    elasticsearch-6.8.0+elasticsearch-analysis-ik-6.8.0 .zip

    5. **查询接口设计**:利用 Elasticsearch 的 Query DSL 设计查询接口,支持多种查询条件和组合。 6. **结果排序与聚合**:实现搜索结果的排序和聚合统计,以提供更丰富的查询结果展示。 7. **监控与调优**:通过 ...

    Elastic Search搭建使用教程.pdf(内含ElasticSearch教程权威指南)

    Elasticsearch是一款基于Lucene的开源搜索引擎,它使用RESTful接口进行数据操作,数据以JSON格式存储。Elasticsearch以其高效的全文搜索功能,实时数据处理能力,以及易于使用的特性,在众多企业中得到了广泛应用,...

    es-head Elasticsearch的可视化操作插件

    es-head是一个针对Elasticsearch的可视化操作插件。它提供了一个便捷的操作工具,可以连接Elasticsearch搜索引擎,并提供可视化的操作页面,对Elasticsearch进行各种设置和数据检索功能的管理。 es-head 插件可以在...

    elasticsearch7.14.0.zip

    Elasticsearch 7.14.0 是一个高度可扩展的全文搜索引擎,广泛应用于日志分析、实时数据分析和全文检索等多个领域。这个压缩包包含了针对Windows和Linux操作系统的安装包,便于在不同环境下部署和使用Elasticsearch。...

    elasticsearch-hadoop-8.8.0

    3. **ES识别的命令**:ES是Elasticsearch的缩写。Elasticsearch有自己的RESTful API,用于索引、搜索、分析和管理数据。通过Elasticsearch-Hadoop,用户可以在Hadoop环境中使用这些API,实现对Elasticsearch集群的...

    elasticsearch服务器安装包

    2. **下载安装包**:这里的"es安装包"即为Elasticsearch的安装文件,通常是一个zip或tar.gz格式的压缩包。你需要从官方网站或者镜像站点下载对应版本的安装包,确保与你的系统兼容。 3. **解压安装**:下载完成后,...

    elasticsearch-6.8.18.rar(elasticsearch-6.8.18.zip)

    Elasticsearch是一个强大的开源搜索引擎,基于Apache Lucene构建,它为开发者和数据分析师提供了高效、可扩展、实时的搜索和分析功能。6.8.18版本是Elasticsearch的一个稳定版本,它在前几个版本的基础上进行了优化...

    Elasticsearch 开发手册

    在数据抽取 ELT 领域,ES 全家桶 ELK(Elasticsearch+Logstash+Kibana)赫赫有名。 Elasticsearch 基本概念: * 倒排索引:Elasticsearch 为什么快,核心设计理念就是采用了倒排索引机制。倒排索引的方式是,根据 ...

    elasticSearch-8.14.1-windows

    Elasticsearch 8.14.1 是一个高度可扩展的开源全文检索和分析引擎,专为分布式环境设计。它允许开发者和系统管理员快速、高效地存储、搜索和分析大量数据。Elasticsearch 广泛应用于日志分析、信息检索、网站搜索、...

    基于.netcore搜索封装ElasticSearch.zip

    这个名为"基于.netcore搜索封装ElasticSearch.zip"的压缩包,显然包含了一个针对.NET Core平台的Elasticsearch客户端库,方便开发者在.NET Core应用中集成和操作Elasticsearch。 Elasticsearch是一个开源的分布式...

Global site tag (gtag.js) - Google Analytics