`

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,当es想批量删除数据时,安装该插件,可用将查询的结果数据进行批量删除。

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

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

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载

    es-wp-query, 在替换WP_Query以利用Elasticsearch进行复杂查询时,.zip

    es-wp-query, 在替换WP_Query以利用Elasticsearch进行复杂查询时, 用于的Elasticsearch封装替代WP_Query的替代,以利用Elasticsearch进行复杂查询。警告警告 !这个插件目前处于beta开发阶段,因此,它的任何部分都...

    ElasticSearch SQL 教程

    If you (or others you know) are versed in SQL statements and newer to the Elasticsearch query syntax but want to benefit from the power Elasticsearch, this is the talk for you. After making its debut ...

    elasticsearch-7.17.6及对应版本IK分词

    elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...

    elasticsearch-8.2.3 windows 版本

    elasticsearch-8.2.3 windows 版本。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的...

    最新版本springboot集成elasticsearch

    一、概述 一般来说我们开发Elasticsearch会选择...2、elasticsearch-head (方便查看ES中的索引及数据) 3、Kibana(方便开发通过rest api 调试ES,有代码提示) 4、中文分词elasticsearch-analysis-ik (ik) 1、下载ela

    elasticsearch-6.8.3-API文档-中文版.zip

    赠送jar包:elasticsearch-6.8.3.jar; 赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档...

    elasticsearch-6.3.0-API文档-中文版.zip

    赠送jar包:elasticsearch-6.3.0.jar; 赠送原API文档:elasticsearch-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-6.3.0-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.3.0.pom; 包含翻译后的API文档...

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

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

    es docker 部署 elasticsearch.yml

    docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...

    elasticsearch-6.8.3-API文档-中英对照版.zip

    赠送jar包:elasticsearch-6.8.3.jar; 赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档...

    elasticsearch-6.2.3-API文档-中文版.zip

    赠送jar包:elasticsearch-6.2.3.jar; 赠送原API文档:elasticsearch-6.2.3-javadoc.jar; 赠送源代码:elasticsearch-6.2.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.2.3.pom; 包含翻译后的API文档...

    elasticsearch-image-1.0-SNAPSHOT.zip elasticsearch插件 以图搜图 LIRE

    使用方法:将插件解压到elasticsearch 的plugins目录下即可。 存储数据时 ColorLayout surfFeature = new ColorLayout(); surfFeature.extract(ImageIO.read(imgfilepath)); JSONObject o = new JSONObject(); o....

    ElasticSearch实战 in Action.zip

    ElasticSearch实战 in Action(原著原版)压缩包,ElasticSearch文档,ES全文检索从入门到精通,高清PDF,是学习es和精通es必备手册,能快速达到精通ElasticSearch,一册在手,ElasticSearch无忧,开发、学习、调优...

    ElasticSearch数据导出

    ElasticSearch数据导出 elasticsearch单文档数据导出 支持自定义查询 导出数据Json文件

    最新版windows elasticsearch-8.8.2-windows-x86-64.zip

    最新版windows elasticsearch-8.8.2-windows-x86_64.zip最新版windows elasticsearch-8.8.2-windows-x86_64.zip最新版windows elasticsearch-8.8.2-windows-x86_64.zip最新版windows elasticsearch-8.8.2-windows-...

    elasticsearch-shield-2.3.2.jar

    1、进入到Elasticsearch的安装路径下,本文中以该路径为例子:/ultra/ES/elasticsearch-2.3.4。先安装license,执行以下命令: ./bin/plugin install license 2、再安装shield,执行以下命令: ./bin/plugin ...

    ElasticSearch官网文档中文版

    ElasticSearch官网文档中文版

Global site tag (gtag.js) - Google Analytics