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

elasticsearch7.17.3實(shí)現(xiàn)對(duì)中文排序

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

elasticsearch版本:7.17.3
目標(biāo):實(shí)現(xiàn)對(duì)類型為text字段的中文排序

一、用icu分詞器對(duì)中文排序

注意:

  • 如果字段中既有中文又有英文,會(huì)先把中文按字母順序排序,再排英文

1、安裝icu分詞器

執(zhí)行下面命令后,重啟es即可

sudo bin/elasticsearch-plugin install analysis-icu

有下面圖中內(nèi)容代表安裝成功
icu_collation_keyword,es-java,elasticsearch,大數(shù)據(jù),搜索引擎,es-java,es

2、創(chuàng)建索引時(shí)增加sort排序內(nèi)容

下面內(nèi)容是創(chuàng)建了一個(gè)名為es_test的索引內(nèi)容,其中包含名為fileName字段,以ik分詞器分詞,排序內(nèi)容以icu分詞器排序

PUT /es_test
{
  "mappings":{
      "properties":{
      "fileName":{
        "type":"text",
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "fields": {
          "sort": {
            "type": "icu_collation_keyword",
            "index": false,
            "language": "zh",
            "country": "pinyin"
          }
        }
      }
    }
  }
}

3、es命令方式排序

GET es_test/_search
{
  "sort": [
    {
      "fileName.sort": {
        "order": "desc"
      }
    }
  ]
}

4、java調(diào)用的方式排序

這里只寫(xiě)client.search中的內(nèi)容,要想看如何完整的調(diào)用,可以看我此系列的其他文章

SortOptions sortOption = SortOptions.of(_1 -> _1.field(_2 -> _2.field("fileName.sort").order(SortOrder.Desc)));
SearchResponse<Map> search = client.search(_1 -> _1
                            .index(indexName)
                            //es默認(rèn)返回10000條數(shù)據(jù),加上此條配置才能返回全部條數(shù)
                            .trackTotalHits(_2 -> _2.enabled(true))
                            //查詢參數(shù)
                            .query(queryBuilder.build()._toQuery())
                            .from(pageBegin)
                            .size(dto.getPageSize())
                            .sort(sortOption)
                    , Map.class);

二、用pinyin分詞器實(shí)現(xiàn)中文排序

注意

  • pinyin對(duì)數(shù)字的排序可能不會(huì)太理想
  • 由于fielddata會(huì)在內(nèi)存中加載并存儲(chǔ)每個(gè)文檔的字段數(shù)據(jù),以便在排序和聚合等操作中使用,此方式占用內(nèi)存要更大,尤其是啟用了fielddata選項(xiàng)時(shí)
  • 可以將"fileName.pinyin"字段的數(shù)據(jù)類型更改為"keyword"類型,就可以直接對(duì)字段進(jìn)行聚合和排序,而無(wú)需使用fielddata(需要注意keyword類型和text類型的區(qū)別,根據(jù)自己需要確定)

1、安裝pinyin分詞器

執(zhí)行以下命令,根據(jù)自己的版本對(duì)應(yīng)的修改

bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v7.17.3/elasticsearch-analysis-pinyin-7.17.3.zip

2、創(chuàng)建索引時(shí)增加sort相關(guān)內(nèi)容

下面內(nèi)容是創(chuàng)建了一個(gè)名為es_test的索引內(nèi)容,其中包含名為fileName字段,以ik分詞器分詞,相當(dāng)于還創(chuàng)建了一個(gè)名為pinyin的字段,用pinyin分詞器支持排序功能

PUT /es_test
{
  "settings": {
    "analysis": {
      "analyzer": {
        "ik_max_word": {
          "tokenizer": "ik_max_word"
        },
        "ik_smart": {
          "tokenizer": "ik_smart"
        },
        "pinyin_analyzer": {
          "tokenizer": "my_pinyin"
        }
      },
      "tokenizer": {
        "my_pinyin": {
          "type": "pinyin",
          "keep_separate_first_letter": false,
          "keep_full_pinyin": true,
          "keep_original": true,
          "limit_first_letter_length": 16,
          "lowercase": true,
          "remove_duplicated_term": true,
          "trim_whitespace": true
        }
      }
    }
  },
  "mappings":{
      "properties":{
      "fileName":{
        "type": "text",
        "analyzer": "ik_max_word",
        "search_analyzer": "ik_smart",
        "fields": {
          "pinyin": {
            "type": "text",
            "analyzer": "pinyin_analyzer",
            "fielddata":true
          }
        }
      }
    }
  }
}

3、es命令方式排序

POST es_test/_search
{
  "sort": [
    {
      "fileName.pinyin": {
        "order": "asc"
      }
    }
  ]
}

4、java調(diào)用的方式排序

這里只寫(xiě)client.search中的內(nèi)容,要想看如何完整的調(diào)用,可以看我此系列的其他文章

SortOptions sortOption = SortOptions.of(_1 -> _1.field(_2 -> _2.field("fileName.pinyin").order(SortOrder.Desc)));
SearchResponse<Map> search = client.search(_1 -> _1
                            .index(indexName)
                            //es默認(rèn)返回10000條數(shù)據(jù),加上此條配置才能返回全部條數(shù)
                            .trackTotalHits(_2 -> _2.enabled(true))
                            //查詢參數(shù)
                            .query(queryBuilder.build()._toQuery())
                            .from(pageBegin)
                            .size(dto.getPageSize())
                            .sort(sortOption)
                    , Map.class);

尾聲

還有其他的支持中文排序的實(shí)現(xiàn)方式,比如用smartcn分詞器或者jieba分詞器,具體大家可以自己多多嘗試嘗試文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-799101.html

到了這里,關(guān)于elasticsearch7.17.3實(shí)現(xiàn)對(duì)中文排序的文章就介紹完了。如果您還想了解更多內(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)文章

  • python使用ElasticSearch7.17.6筆記

    python使用ElasticSearch7.17.6筆記

    數(shù)操作系統(tǒng):windows10 我開(kāi)始使用最新的版本,8.4.1但是使用過(guò)程中kibana啟動(dòng)不了,就索性使用舊版; 下載地址: es7.17.6 下載地址? kibana7.17.6下載地址 解壓到合適的位置,更改elasticsearch.yml 添加配置如下: 更改kibana.yml配置 到各自的bin目錄下啟動(dòng)兩個(gè)服務(wù)bat文件, 在瀏覽器中

    2024年02月07日
    瀏覽(23)
  • docker部署Elasticsearch7.17集群和kibana

    docker部署Elasticsearch7.17集群和kibana

    環(huán)境準(zhǔn)備: 3臺(tái)centos7.9的服務(wù)器 vim /etc/sysctl.conf添加:vm.max_map_count=262144 sysctl -w vm.max_map_count=262144 即時(shí)生效 cat /proc/sys/vm/max_map_count 查看 #創(chuàng)建es配置目錄 mkdir /home/es/config -p #創(chuàng)建es數(shù)據(jù)目錄 mkdir /home/es/data #創(chuàng)建es插件目錄 mkdir /home/es/plugins #授權(quán)目錄 chmod -R 777 /home/es 在/home/e

    2024年02月10日
    瀏覽(44)
  • 【軟件安裝教程】elasticsearch7.17安裝設(shè)置用戶名和密碼

    【軟件安裝教程】elasticsearch7.17安裝設(shè)置用戶名和密碼

    鏈接:https://pan.baidu.com/s/1f3jTc4kaQvu_i9pVbuXdPQ? 提取碼:l3g1? 下載后解壓? ? bin :存入一些二進(jìn)制腳本,包括啟動(dòng) ES、安裝插件命令等都在這里。 config :存放 ES 的配置文件,主要是 elasticsearch.yml 。 jdk :ES 自帶的 Java 環(huán)境,所以我們無(wú)需自己安裝 Java 環(huán)境。 lib :存放 ES 相關(guān)

    2024年02月13日
    瀏覽(21)
  • elasticSearch7版本文檔中文屬性模糊查詢不準(zhǔn)確

    elasticSearch7版本文檔中文屬性模糊查詢不準(zhǔn)確

    1、問(wèn)題:es文檔中的某個(gè)屬性值name的值如下所示 name\\\":\\\"catalog=Catalog(value=699015935012372480, displayName=/默認(rèn)分組), status=3, updaterName=admin, updateTime=2023-02-01 14:33:17)status:已發(fā)布” 通過(guò)java模糊查詢的api(QueryBuilders.fuzzyQuery)查詢name為“已”的時(shí)候可以查詢,查詢?yōu)椤耙寻l(fā)布”的時(shí)候查

    2024年02月02日
    瀏覽(25)
  • Elasticsearch7.8.0版本進(jìn)階——IK中文分詞器

    Elasticsearch7.8.0版本進(jìn)階——IK中文分詞器

    通過(guò) Postman 發(fā)送 GET 請(qǐng)求查詢分詞效果,在消息體里,指定要分析的文本 輸出結(jié)果如下: 由上圖輸出結(jié)果可知,ES 的默認(rèn)分詞器無(wú)法識(shí)別中文中測(cè)試、單詞這樣的詞匯,而是簡(jiǎn)單的將每個(gè)字拆完分為一個(gè)詞,這樣的結(jié)果顯然不符合我們的使用要求,所以我們需要下載 ES 對(duì)應(yīng)

    2024年02月01日
    瀏覽(50)
  • ElasticSearch:centos7安裝elasticsearch7,kibana,ik中文分詞器,云服務(wù)器安裝elasticsearch

    ElasticSearch:centos7安裝elasticsearch7,kibana,ik中文分詞器,云服務(wù)器安裝elasticsearch

    系統(tǒng):centos7 elasticsearch: 7.17.16 安裝目錄:/usr/local 云服務(wù)器的安全組:開(kāi)放 9200 和5601的端口 1、安裝 2、修改es的配置文件 注意:es集群?jiǎn)?dòng)后,所有節(jié)點(diǎn)的cluster.initial_master_nodes: [\\\"node-1\\\"] 都要注釋掉。 3、修改jvm.options 可能出現(xiàn)報(bào)錯(cuò) 1、配置elasticsearch.yml ? 錯(cuò)誤內(nèi)容 : the de

    2024年02月03日
    瀏覽(31)
  • ElasticSearch7.3學(xué)習(xí)(二十二)----Text字段排序、Scroll分批查詢場(chǎng)景解析

    ElasticSearch7.3學(xué)習(xí)(二十二)----Text字段排序、Scroll分批查詢場(chǎng)景解析

    場(chǎng)景:數(shù)據(jù)庫(kù)中按照某個(gè)字段排序,sql只需寫(xiě)order by 字段名即可,如果es對(duì)一個(gè) text field 進(jìn)行排序,es中無(wú)法排序。因?yàn)槲臋n入倒排索引表時(shí),分詞存入,es無(wú)法知道此字段的真實(shí)值。這樣的結(jié)果往往不準(zhǔn)確,因?yàn)榉衷~后是多個(gè)單詞,再排序就不是我們想要的結(jié)果了。 通常有兩

    2024年02月08日
    瀏覽(19)
  • Elasticsearch7.15.2 安裝ik中文分詞器后啟動(dòng)ES服務(wù)報(bào)錯(cuò)的解決辦法

    Elasticsearch7.15.2 安裝ik中文分詞器后啟動(dòng)ES服務(wù)報(bào)錯(cuò)的解決辦法

    下載elasticsearch ik中文分詞器,在elasticsearch安裝目錄下的plugins文件夾下創(chuàng)建名為ik的文件夾,將下載的ik中文分詞器解壓縮到新建的ik文件夾下,再次運(yùn)行 ./bin/elasticsearch啟動(dòng)ES服務(wù)時(shí)出現(xiàn)以下錯(cuò)誤: Exception in thread \\\"main\\\" java.nio.file.NotDirectoryException: /Users/amelia/work/elasticsearch-7.1

    2024年02月12日
    瀏覽(34)
  • SkyWalking+ElasticSearch7實(shí)現(xiàn)日志追蹤

    SkyWalking+ElasticSearch7實(shí)現(xiàn)日志追蹤

    國(guó)內(nèi)es下載地址 修改elasticsearch-env ,elasticsearch7 先去獲取本地的jdk 如果jdk 環(huán)境不存在則會(huì)使用 elasticsearch-7.8.0/jdk 下的jdk ,因?yàn)樾【幈镜豭dk版本為1.8 運(yùn)行時(shí)會(huì)報(bào)錯(cuò) future versions of Elasticsearch will require Java 11; your Java version from [/data/jdk1.8.0_111/jre] does not meet this requirement 因此我們

    2024年02月06日
    瀏覽(20)
  • 本地部署Canal筆記-實(shí)現(xiàn)MySQL與ElasticSearch7數(shù)據(jù)同步

    本地部署Canal筆記-實(shí)現(xiàn)MySQL與ElasticSearch7數(shù)據(jù)同步

    本地搭建canal實(shí)現(xiàn)mysql數(shù)據(jù)到es的簡(jiǎn)單的數(shù)據(jù)同步,僅供學(xué)習(xí)參考 建議首先熟悉一下canal同步方式:https://github.com/alibaba/canal/wiki 本地搭建MySQL數(shù)據(jù)庫(kù) 本地搭建ElasticSearch 本地搭建canal-server 本地搭建canal-adapter 本地環(huán)境為window11,大部分組件采用docker進(jìn)行部署,MySQL采用8.0.27, 推薦

    2024年02月02日
    瀏覽(96)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包