Compound Query 复合查询详解
1、 constant Query
该查询能够包含一个查询或过滤器,通过该方式将返回的文档的score设置为1, 然后通过设置boost来提高当前查询的权重(官方文档说返回的score和boost相等), 提高该查询的相关度
QueryBuilder queryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("hotelName", "酒")).boost(2f))
.should(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("hotelName", "店")).boost(1f))
应用场景: 比如匹配酒店设备:多个term 泳池,花园,wifi 比如我们要将泳池的的分值放大,则将泳池的term通过该方式包一下,并设置一个你认为合理的权重,提高泳池在酒店匹配过程的占比。
QueryBuilder queryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("hotelName", "泳池")).boost(2f))
.should(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("hotelName", "花园")).boost(1f))
.should(QueryBuilders.constantScoreQuery(QueryBuilders.termQuery("hotelName", "wifi")).boost(1f))
2、bool query
一种复合查询,三种逻辑关系如下 must: AND
must_not:NOT should:OR 复合查询: cityCode="chongqing_city" 并且 hotelName="hotel22"
QueryBuilders.boolQuery().must(QueryBuilders.matchQuery("cityCode","chongqing_city")).must(QueryBuilders.matchQuery("hotelName", "hotel22"))
3、 Dis Max Query
将子查询union 到一起,没个文档的分数是 子查询中相同文档的得分最大值。 例: 北京大饭店 酒索引得分 0; 店 得分 1; 大得分1.1 最后的结果是 北京大饭店相关度得分1.1
QueryBuilders.disMaxQuery()
.add(QueryBuilders.termQuery("hotelName","酒"))
.add(QueryBuilders.termQuery("hotelName","店"))
.add(QueryBuilders.termQuery("hotelName","大"));
4、boosting query
一种复合查询,分为positive子查询和negitive子查询,两者的查询结构都会返回。 positive子查询的score保持不变,negetive子查询的值将会根据negative_boost(小于1)的值相乘,做相应程度的降低分值 hotelName 检索酒店,hotelNo 检索123 hotelNo检索获得的分值通过乘以0.3来降低分值,降低相关度
QueryBuilders.boostingQuery().positive(QueryBuilders.matchQuery("hotelName", "酒店")).negative(QueryBuilders.matchQuery("hotelNo","123")).negativeBoost(0.3f)
5、 indices Query
跨索引复合查询,实现跨索引的查询,并提供没有查询到结果是 从其他索引查询(默认是从其他所有索引进行匹配) 如下实例:从 索引1,索引2 中查询hotelName = "7天"的 term 查询。 如果没有查询到数据,从 索引3 查询hotelName = "置" 的term查询,如果没有指明索引3,默认从client下所有索引中进行匹配结果
QueryBuilder queryBuilder = QueryBuilders.indicesQuery(QueryBuilders.termQuery("hotelName", "7天"), "索引1","索引2")
.noMatchQuery(QueryBuilders.termQuery("hotelName", "置"));
System.out.println(queryBuilder);
SearchResponse response = client.prepareSearch("索引3")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.execute()
.actionGet();
分享到:
相关推荐
ES插件,可以查看集群状态,也可以在插件中操作向ES中插入、删除索引以及数据。
一.Es的配置 实现es的全文检索功能的第一步,首先从与es进行连接开始,这里我使用的是es的5.x java api语法. public TransportClient esClient() throws UnknownHostException{ Settings settings = Settings....
ElasticSearch之插件Delete-by-Query,当es想批量删除数据时,安装该插件,可用将查询的结果数据进行批量删除。
es-wp-query, 在替换WP_Query以利用Elasticsearch进行复杂查询时, 用于的Elasticsearch封装替代WP_Query的替代,以利用Elasticsearch进行复杂查询。警告警告 !这个插件目前处于beta开发阶段,因此,它的任何部分都...
springboot整合elasticsearch7,进行数据同步。elasticsearch相关度查询、排序。高亮显示;自动补全等功能。代码仅供参考,代码中有具体的注释,可以根据代码及注释内容,对自己项目架构及业务进行修改、整合。
ElasticSearch查询学习;ElasticSearch查询学习;ElasticSearch查询学习;ElasticSearch查询学习;ElasticSearch查询学习;ElasticSearch查询学习;
4.(后端技术篇java)ElasticSearch实现反向地址匹配服务(点周边查询服务) 5.(后端技术篇java)ElasticSearch实现矩形空间查询服务 6.(后端技术篇java)ElasticSearch实现圆形空间查询服务 7.(后端技术篇java)...
elasticsearch python 查询的两种方法,具体内容如下所述: from elasticsearch import Elasticsearch es = Elasticsearch res1 = es.search(index=2018-07-31, body={query: {match_all: {}}}) print(es1) {'_...
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
ElasticSearch数据导出 elasticsearch单文档数据导出 支持自定义查询 导出数据Json文件
elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载
今天小编就为大家分享一篇关于JAVA使用Elasticsearch查询in和not in的实现方式,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
ElasticSearch查询scroll,delete-by-query,bool,boosting,filter,highlight查询 ElasticSearch查询cardinality,range,extended_stats聚合统计aggregations查询 ElasticSearch查询geo_distance,geo_bounding_...
elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索...随着您的数据和查询量的增长,Elasticsearch 的分布式特性使您的部署能够随之无缝增长
对Elasticsearch-PHP进行查询语句封装 可实现链式调用 方便 es查询
elasticsearch安装详解,配置过程详解,常见报错解决办法总结,启动过程详解,基本入门指南
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 ...
esquery 一个针对的的非性,惯用且易于使用的查询和聚合构建器。目录自定义查询和汇总执照 描述esquery减轻了使用极其嵌套的映射( map[string]interface{} )并手动将查询序列化为JSON的需要。 由于所有内容都是...
HBase+ElasticSearch搭建过程详解