ES根据得分数聚合去重

这篇具有很好参考价值的文章主要介绍了ES根据得分数聚合去重。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.es原型

{
	"query": {
		"bool": {
			"should": [{
				"match": {
					"titleSegs": {
						"query": "相同",
						"operator": "OR",
						"prefix_length": 0,
						"max_expansions": 50,
						"fuzzy_transpositions": true,
						"lenient": false,
						"zero_terms_query": "NONE",
						"auto_generate_synonyms_phrase_query": true,
						"boost": 1.0
					}
				}
			},  {
				"constant_score": {
					"filter": {
						"match": {
							"titleFirstPYSuggest.suffix": {
								"query": "xt",
								"operator": "OR",
								"prefix_length": 0,
								"max_expansions": 50,
								"fuzzy_transpositions": true,
								"lenient": false,
								"zero_terms_query": "NONE",
								"auto_generate_synonyms_phrase_query": true,
								"boost": 1.0
							}
						}
					},
					"boost": 20.0
				}
			}],
			"adjust_pure_negative": true,
			"boost": 10.0
		}
	},
	"aggregations": {
		"top_title_hits": {
			"terms": {
				"field": "title",
				"size": 10,
				"min_doc_count": 1,
				"shard_min_doc_count": 0,
				"show_term_doc_count_error": false,
				"order": [{
					"maxSource": "desc"
				}, {
					"_key": "asc"
				}]
			},
			"aggregations": {
				"maxSource": {
					"max": {
						"script": {
							"source": "_score",
							"lang": "painless"
						}
					}
				},
				"top_title_hits": {
					"top_hits": {
						"from": 0,
						"size": 10,
						"version": false,
						"explain": false
					}
				}
			}
		}
	}
}

2.Java客户端

 AggregationBuilder aggregation = 
                AggregationBuilders.terms(topHitsAggregationName)
                .field("title")
                .minDocCount(1).size(resultNum)
                .order(BucketOrder.aggregation("maxSource", false));
        TopHitsAggregationBuilder topHitsAggregation = 
                        
                             AggregationBuilders.topHits(topHitsAggregationName)
                             .size(resultNum);
       // topHitsAggregation.fetchSource("title", null);
// 自定义
        aggregation.subAggregation(AggregationBuilders.max("maxSource")
.script( new Script("_score")));
        aggregation.subAggregation(topHitsAggregation);

        searchSourceBuilder.aggregation(aggregation);

        SearchRequest searchRequest = new SearchRequest()
                .indices(indexName).source(searchSourceBuilder)
                .searchType(SearchType.DFS_QUERY_THEN_FETCH);

3.展示搜索结果

ParsedStringTerms parsedStringTerms = searchResponse.getAggregations().get(topHitsAggregationName);
       for (Terms.Bucket bucket : parsedStringTerms.getBuckets()) {
            ParsedTopHits parsedTopHits = bucket.getAggregations().get(topHitsAggregationName);
           JSONObject jsonObject = null;
           AutoCompleteResultVO vo = new AutoCompleteResultVO();
           if (parsedTopHits != null) {
                SearchHit topSearchHit = parsedTopHits.getHits().getHits()[0];
               jsonObject = JSONObject.parseObject(topSearchHit.getSourceAsString());
                jsonObject.put("_esScore", topSearchHit.getScore());
            } else {
              jsonObject = new JSONObject();
          }

          if (jsonObject.containsKey("title")) {
              vo.setName(jsonObject.getString("title"));
          }
         
        }

文章来源地址https://www.toymoban.com/news/detail-504969.html

到了这里,关于ES根据得分数聚合去重的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • golang实现es根据某字段分组,统计每组某一字段的数量,过滤空值并去重

    需求: 索引:dna 需求:根据app.Id分组,统计每组的OwnerBid数量,过滤空值并去重 dna索引结构 es查询语句 es查询结果 goalng实现 models.EsCountAgg 【面向校招】全力备战2023Golang实习与校招 欢迎进群交流:1007576722

    2024年02月17日
    浏览(48)
  • ElasticSearch minimum_should_match 参数详解

    minimum_should_match :可以使用 minimum_should_match 参数来指定返回文档 必须(must) 匹配的should子句的数量或百分比。可以称他-最小匹配度 如果 bool 查询至少包含一个 should 子句,并且没有 must 或 filter 子句,则默认值为 1。 否则,默认值为 0。 minimum_should_match参数一般放到should叶子查

    2024年02月19日
    浏览(39)
  • ElasticSearch中查询语句用法(match、match_phrase、multi_match、query_string)

    略 1.1 不同字段权重         如果需要为不同字段设置不同权重,可以考虑使用 bool 查询的 should 子句来组合多个 match 查询,并为每个 match 查询设置不同的权重。         上面的查询将在 product_name 字段和 description 字段中搜索包含 \\\"apple\\\" 的文档,并为 product_name 字段设

    2024年02月10日
    浏览(43)
  • [match_phrase_prefix] query does not support [zero_terms_query] 问题解决

    @[TOC][match_phrase_prefix] query does not support [zero_terms_query] 问题解决 elasticsearch版本 :7.8 客户端elasticsearch : 7.12.1 报错代码 match_phrase_prefix在Elasticsearch 7.10版本后才支持zero_terms_query选项 https://github.com/elastic/elasticsearch/issues/58468

    2024年02月16日
    浏览(47)
  • [exceptions] elasticsearch使用报错:match query malformed, no start_object after query name“

    使用elastic search的template query,组织好query_string访问后,提示 “ match query malformed, no start_object after query name”。服务器应该是 es7.2的版本。 这个query_string没学太明白,但是这个报错说明qurey string的层级写的有点问题。照下面这个层级改了一下好了。如果路过的大佬后来看到e

    2024年02月11日
    浏览(41)
  • 解决match/range [match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]

    使用es查询数据的时候会遇到提示match/range [match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]错误,这个时候你需要检查一下自己的query条件的大括号,这类问题基本是 花括号的位置不正确引起的 ,例如 是正确的,如果是这样就会报上述错误, 下面是错误示范 大家看出区

    2024年02月12日
    浏览(44)
  • Stream流根据属性去重

    创建一个user集合 写一个Predict 使用filter方法 结果: 小结: 实质上是将每个元素都放到distinctByKey()中的ConcurrentHashMap作为key进行过滤,如果key不存在那么就加上去,如果已经存在了就不加。所以这种方式的过滤只保留第一个重复元素。 结果与上面的一样 同时过滤两个属性 结

    2024年02月04日
    浏览(48)
  • Stream流中,根据对象去重+指定对象中的属性去重

    首先定义一个学生类: 在main方法中构造四个对象,其中第四个对象为重复对象,现在进行对象的去重、以及对象中某一属性的去重操作 一、根据对象去重: 以下代码写于main函数中: 运行结果如下,可以看到,stream流的distinct只是将对象去重,将相同的第三个和第四个对象

    2024年02月02日
    浏览(67)
  • SQL结果-根据某个字段取最新时间去重

    现在有个sql,如果“propertyId”相同,取“updateTime”时间最新的那条记录,其他过滤掉。 结果SQL 为了通过 propertyId 去重并获取每个 propertyId 对应的最新时间的记录,可以使用窗口函数 ROW_NUMBER() 来对每个分组进行排序,并在外部查询中取出 rn 列等于 1 的行,即每个分组中的第

    2024年02月07日
    浏览(60)
  • ES:先按相关性分数进行排序,分数相同时再按其他字段排序

    最近,在公司学习ES的使用,导师给了个题目,如何对一个文档先计算分数,用分数进行排序,在分数相同的情况下再按照别的字段(如时间)进行排序,为此,从来没接触过ES的我开启了艰难的学习之路 本文参考自 ES权威指南(中文版) 以下是目录: 相关性算分描述了一个

    2024年02月05日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包