国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【elasticsearch】ES去重查詢實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了【elasticsearch】ES去重查詢實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

去重實(shí)現(xiàn)原理: 采用es 的Collapse折疊+cardinality基數(shù)計(jì)算 實(shí)現(xiàn)去重
1、優(yōu)點(diǎn):簡(jiǎn)單快速效率高,幾乎無(wú)性能損耗(相比于分桶去重)
2、缺點(diǎn):
1)Collapse折疊只支持一個(gè)字段去重,且字段必須是 keyword
2)cardinality基數(shù)計(jì)算去重后數(shù)量 (采用hyperloglog實(shí)現(xiàn),hyperloglog一種近似計(jì)算)會(huì)有誤差,
3) 不支持search_after 和 scroll,有深度分頁(yè)問(wèn)題

1、單個(gè)字段去重

GET /xxxxx/_search
{  "_source": [   //查詢顯示的字段
        "title",
        "uuid",
        "id"
      ],
   "query": {
    "match_phrase": {
      "title": "去重查詢"
    }
  },
  "sort": [
    {
      "id.keyword": {
        "order": "desc"
      }
    }
  ],
  "collapse": {  
    "field": "uuid.keyword",//折疊字段,即 去重字段(折疊只支持一個(gè)字段)
    "inner_hits": {   //內(nèi)部查詢可以省略
      "name": "inner_tops",//內(nèi)部查詢的名字
      "size": 2,       //折疊項(xiàng) 取幾個(gè)
      "sort": [    //折疊 內(nèi)部排序字段
        {
          "id.keyword": "desc"
        }
      ],
      "collapse": { "field": "title.keyword" },//二次折疊
      "_source": [   //內(nèi)部查詢顯示的字段
        "title",
        "uuid",
        "id"
      ]
    }
  },
  "aggs": {
    "total_size": {   //聚合桶名稱
      "cardinality": {  //折疊 total 數(shù)量不發(fā)生變化,采用cardinality 獲取總數(shù)量
        "field": "uuid.keyword" 
        "precision_threshold": 100   //精確度,0-40000 
      }
    }
  },
  "track_total_hits":true  //返回所有條數(shù)結(jié)果,默認(rèn)返回10000
}
java API
//折疊和cardinality   去重 查詢
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
AggregationBuilder aggregation = AggregationBuilders.cardinality(“total_size”).field("uuid.keyword");
searchSourceBuilder.aggregation(aggregation);

Aggregations aggregations = searchResponse.getAggregations();
Cardinality cardinality = aggregations.get(“total_size”);
System.out.println(cardinality.getValue())
   Elasticsearch 8.0+ 新版api 
   BoolQuery.Builder boolQuery = new BoolQuery.Builder();
   SearchResponse<JSONObject> search = elasticsearchClient.search(builder ->
                                builder.index(EsIndexConstants.INDEX_NAME).query(q ->
                                                q.bool(boolQuery.build()))
                                        .from(start)
                                        .size(requestInfo.getPageSize())
                                        .collapse(new FieldCollapse.Builder().field("uuid.keyword").build())
                                        .sort(s -> s.field(f -> f.field("publish_time").order(SortOrder.Desc))
                                       	//
                                        .aggregations("total_size", a-> a.cardinality(b->b.field("uuid.keyword").precisionThreshold(100))
                                        )
                                        .trackTotalHits(t -> t.enabled(true))
                        , JSONObject.class);
 //獲取折疊后的總數(shù)                       
long totalSize=search.aggregations().get("total_size").cardinality().value();

2、多個(gè)字段去重
將多個(gè)字段組合成 一個(gè)字段然后去重
多個(gè)字段組合成一個(gè)字段有3種方案
1)寫入的時(shí)候組合
2)采用pinpline
3)采用script 腳本文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-734911.html

到了這里,關(guān)于【elasticsearch】ES去重查詢實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ElasticSearch進(jìn)階:一文全覽各種ES查詢?cè)贘ava中的實(shí)現(xiàn)

    ElasticSearch進(jìn)階:一文全覽各種ES查詢?cè)贘ava中的實(shí)現(xiàn)

    ElasticSearch進(jìn)階:一文全覽各種ES查詢?cè)贘ava中的實(shí)現(xiàn) es基本語(yǔ)句詳解 查詢語(yǔ)句詳解 ElasticSearch第一篇: ElasticSearch基礎(chǔ):從倒排索引說(shuō)起,快速認(rèn)知ES 完整項(xiàng)目已上傳至:ElasticSearch Demo 項(xiàng)目,該項(xiàng)目是關(guān)于springboot的集成項(xiàng)目,ElasticSearch部分請(qǐng)關(guān)注【elasticSearch-demo】模塊。覺(jué)得

    2024年02月02日
    瀏覽(20)
  • es 使用 cardinality + collapse做分頁(yè)去重查詢

    1.首先我們來(lái)介紹一下cardinality的用法 cardinality 即去重計(jì)算,類似sql中 count(distinct),先去重再求和,計(jì)算指定field值的種類數(shù)。 可以看到,aggregations聚合下,返回了按名字查詢?nèi)ブ睾蟮慕Y(jié)果數(shù),但是只有去重后的條數(shù),沒(méi)有具體的數(shù)據(jù)。 2.接下來(lái)我們?cè)倏匆幌耤ollapse的用法

    2024年02月01日
    瀏覽(25)
  • ES(Elasticsearch)+SpringBoot實(shí)現(xiàn)分頁(yè)查詢

    1.ES介紹 ??ES作為一個(gè)搜索工具,寄托于Lucene之上,提供了方便的數(shù)據(jù)存儲(chǔ)和搜索服務(wù),一般的用它來(lái)作為網(wǎng)頁(yè)數(shù)據(jù)索引以及存儲(chǔ)用戶畫像(即用戶標(biāo)簽)數(shù)據(jù),可以提供復(fù)具有復(fù)雜的查詢條件的服務(wù)。例如在網(wǎng)頁(yè)索引中,通過(guò)倒排的方式索引的方式,對(duì)文檔進(jìn)行分詞存儲(chǔ),

    2024年02月16日
    瀏覽(24)
  • java使用ElasticSearch的scroll查詢,高效的解決es查詢數(shù)量的限制。

    (1)首先我們要明白es的查詢機(jī)制:ES的搜索是分2個(gè)階段進(jìn)行的,即 Query階段和Fetch階段 。 Query階段 比較輕量級(jí),通過(guò)查詢倒排索引,獲取滿足查詢結(jié)果的文檔ID列表。 Fetch階段 比較重,需要將每個(gè)分片的查詢結(jié)果取回,在協(xié)調(diào)結(jié)點(diǎn)進(jìn)行 全局 排序。 通過(guò)From+size這種方式分批

    2024年02月03日
    瀏覽(42)
  • ElasticSearch入門:使用ES來(lái)實(shí)現(xiàn)模糊查詢功能

    本文針對(duì)在工作中遇到的需求:通過(guò)es來(lái)實(shí)現(xiàn) 模糊查詢 來(lái)進(jìn)行總結(jié);模糊查詢的具體需求是:查詢基金/A股/港股等金融數(shù)據(jù),要求可以根據(jù) 字段 , 拼音首字母 , 部分拼音全稱 進(jìn)行聯(lián)想查詢;需要注意的是,金融數(shù)據(jù)名稱中可能不止包含漢字,還有英文,數(shù)字,特殊字符等

    2023年04月09日
    瀏覽(23)
  • Elasticsearch“滾動(dòng)查詢“(Scrolling)的機(jī)制的與Java使用ES Client 調(diào)用滾動(dòng)查詢

    Elasticsearch“滾動(dòng)查詢“(Scrolling)的機(jī)制的與Java使用ES Client 調(diào)用滾動(dòng)查詢

    ES在進(jìn)行普通的查詢時(shí),默認(rèn)只會(huì)查詢出來(lái)10條數(shù)據(jù)。我們通過(guò)設(shè)置es中的size可以將最終的查詢結(jié)果從10增加到10000。如果需要查詢數(shù)據(jù)量大于es的翻頁(yè)限制或者需要將es的數(shù)據(jù)進(jìn)行導(dǎo)出又當(dāng)如何? Elasticsearch提供了一種稱為 \\\"滾動(dòng)查詢\\\"(Scrolling) 的機(jī)制,用于處理大型數(shù)據(jù)集的

    2024年02月11日
    瀏覽(18)
  • ElasticSearch如何使用以及java代碼如何查詢并排序ES中的數(shù)據(jù)(距離排序)

    ElasticSearch如何使用以及java代碼如何查詢并排序ES中的數(shù)據(jù)(距離排序)

    import org.elasticsearch.client.RestHighLevelClient; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.geo.GeoDistance; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.common.unit.

    2024年04月12日
    瀏覽(25)
  • ElasticSearch(7.8版本)聚合查詢使用javaHighLevelRestClient實(shí)現(xiàn)(從MySQL聚合查詢概念->ES聚合概念及實(shí)操)

    申明:本文是在實(shí)現(xiàn)ES聚合功能中,將過(guò)程中查找的多篇博客文獻(xiàn)拼接在一起,參考到的博文全部在標(biāo)題中附上了原文的超鏈接,分享出來(lái)僅是為了提做一個(gè)筆記以防忘記,并給大家提供一個(gè)參考。 聚合操作指的是在數(shù)據(jù)查找基礎(chǔ)上對(duì)于數(shù)據(jù)進(jìn)一步整理篩選行為,聚合操作也

    2023年04月24日
    瀏覽(33)
  • 【Elasticsearch】ES精確查詢和范圍查詢,ES時(shí)間字段排序?qū)嵗珽S倒排索引介紹

    【Elasticsearch】ES精確查詢和范圍查詢,ES時(shí)間字段排序?qū)嵗珽S倒排索引介紹

    termQuery matchQuery 模糊查詢 multiMatchQuery 多個(gè)字段模糊查詢 如果時(shí)間字段寫入時(shí)用的類型是Text,可以用“時(shí)間字段.keyword”來(lái)處理 #查詢前傳入分頁(yè)參數(shù) #分頁(yè)后拿到總記錄數(shù) 把文檔D對(duì)應(yīng)到的映射轉(zhuǎn)換為到文檔ID的映射,每個(gè)都對(duì)應(yīng)著一系列的文檔,這些文

    2024年02月15日
    瀏覽(126)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包