<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ElasticSearch快速入門(mén)【建議收藏】

          共 5960字,需瀏覽 12分鐘

           ·

          2021-08-20 16:23

          鏈接上一篇文章 深入淺出講解 ElasticSearch的安裝與使用【建議收藏】


          3.ES快速入門(mén)

          ES作為一個(gè)索引及搜索服務(wù),對(duì)外提供豐富的REST接口,快速入門(mén)部分的實(shí)例使用head插件來(lái)測(cè)試,目的是對(duì)ES的使用方法及流程有個(gè)初步的認(rèn)識(shí)。


          3.1 創(chuàng)建索引庫(kù)

          ES的索引庫(kù)是一個(gè)邏輯概念,它包括了分詞列表及文檔列表,同一個(gè)索引庫(kù)中存儲(chǔ)了相同類(lèi)型的文檔。它就相當(dāng)于MySQL中的表,或相當(dāng)于Mongodb中的集合。
          關(guān)于索引這個(gè)語(yǔ):
          索引(名詞):ES是基于Lucene構(gòu)建的一個(gè)搜索服務(wù),它要從索引庫(kù)搜索符合條件索引數(shù)據(jù)。
          索引(動(dòng)詞):索引庫(kù)剛創(chuàng)建起來(lái)是空的,將數(shù)據(jù)添加到索引庫(kù)的過(guò)程稱(chēng)為索引。


          下邊介紹兩種創(chuàng)建索引庫(kù)的方法,它們的工作原理是相同的,都是客戶(hù)端向ES服務(wù)發(fā)送命令。
          1)使用postman或curl這樣的工具創(chuàng)建:

          put http://localhost:9200/索引庫(kù)名稱(chēng)
          {    "settings":{        "index":{            "number_of_shards":1,            "number_of_replicas":0        }    }}

          number_of_shards:設(shè)置分片的數(shù)量,在集群中通常設(shè)置多個(gè)分片,表示一個(gè)索引庫(kù)將拆分成多片分別存儲(chǔ)不同的結(jié)點(diǎn),提高了ES的處理能力和高可用性,入門(mén)程序使用單機(jī)環(huán)境,這里設(shè)置為1。
          number_of_replicas:設(shè)置副本的數(shù)量,設(shè)置副本是為了提高ES的高可靠性,單機(jī)環(huán)境設(shè)置為0.
          如下是創(chuàng)建的例子,創(chuàng)建xc_course索引庫(kù),共1個(gè)分片,0個(gè)副本:

          使用head插件創(chuàng)建

          3.2 創(chuàng)建映射

          3.2.1 概念說(shuō)明

          在索引中每個(gè)文檔都包括了一個(gè)或多個(gè)field,創(chuàng)建映射就是向索引庫(kù)中創(chuàng)建field的過(guò)程,下邊是document和field與關(guān)系數(shù)據(jù)庫(kù)的概念的類(lèi)比:

          文檔(Document)----------------Row記錄
          字段(Field)-------------------Columns 列

          注意:6.0之前的版本有type(類(lèi)型)概念,type相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)的表,ES官方將在ES9.0版本中徹底刪除type。


          上邊講的創(chuàng)建索引庫(kù)相當(dāng)于關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)還是表?
          1、如果相當(dāng)于數(shù)據(jù)庫(kù)就表示一個(gè)索引庫(kù)可以創(chuàng)建很多不同類(lèi)型的文檔,這在ES中也是允許的。
          2、如果相當(dāng)于表就表示一個(gè)索引庫(kù)只能存儲(chǔ)相同類(lèi)型的文檔,ES官方建議 在一個(gè)索引庫(kù)中只存儲(chǔ)相同類(lèi)型的文檔。


          3.2.2 創(chuàng)建映射

          我們要把信息存儲(chǔ)到ES中,這里我們創(chuàng)建信息的映射,先來(lái)一個(gè)簡(jiǎn)單的映射,如下:

          發(fā)送:post http://localhost:9200/索引庫(kù)名稱(chēng)/類(lèi)型名稱(chēng)/_mapping

          創(chuàng)建類(lèi)型為xc_course的映射,共包括三個(gè)字段:name、description、studymondel
          由于ES6.0版本還沒(méi)有將type徹底刪除,所以暫時(shí)把type起一個(gè)沒(méi)有特殊意義的名字。

          post 請(qǐng)求:http://localhost:9200/xc_course/doc/_mapping

          表示:在xc_course索引庫(kù)下的doc類(lèi)型下創(chuàng)建映射。doc是類(lèi)型名,可以自定義,在ES6.0中要弱化類(lèi)型的概念,給它起一個(gè)沒(méi)有具體業(yè)務(wù)意義的名稱(chēng)。

          {    "properties":{        "name":{            "type":"text"        },        "description":{            "type":"text"        },        "studymodel":{            "type":"keyword"        }    }}


          映射創(chuàng)建成功,查看head界面:

          3.3 創(chuàng)建文檔

          ES中的文檔相當(dāng)于MySQL數(shù)據(jù)庫(kù)表中的記錄。

          發(fā)送:put 或Post http://localhost:9200/xc_course/doc/id值

          (如果不指定id值ES會(huì)自動(dòng)生成ID)

          http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000
          {"name":"Bootstrap開(kāi)發(fā)框架","description":"Bootstrap是由Twitter推出的一個(gè)前臺(tái)頁(yè)面開(kāi)發(fā)框架,在行業(yè)之中使用較為廣泛。此開(kāi)發(fā)框架包含了大量的CSS、JS程序代碼,可以幫助開(kāi)發(fā)者(尤其是不擅長(zhǎng)頁(yè)面開(kāi)發(fā)的程序人員)輕松的實(shí)現(xiàn)一個(gè)不受瀏覽器限制的精美界面效果。","studymodel":"201001"}

          使用postman測(cè)試:

          通過(guò)head查詢(xún)數(shù)據(jù):

          3.4 搜索文檔

          1、根據(jù)課程id查詢(xún)文檔

          發(fā)送:get http://localhost:9200/xc_course/doc/4028e58161bcf7f40161bcf8b77c0000

          使用postman測(cè)試:

          2、查詢(xún)所有記錄

          發(fā)送 get http://localhost:9200/xc_course/doc/_search

          3、查詢(xún)名稱(chēng)中包括spring 關(guān)鍵字的的記錄

          發(fā)送:get http://localhost:9200/xc_course/doc/_search?q=name:bootstrap

          4、查詢(xún)學(xué)習(xí)模式為201001的記錄

          發(fā)送 get http://localhost:9200/xc_course/doc/_search?q=studymodel:201001


          3.4.1查詢(xún)結(jié)果分析
          {    "took": 4,    "timed_out": false,    "_shards": {        "total": 1,        "successful": 1,        "skipped": 0,        "failed": 0    },    "hits": {        "total": 1,        "max_score": 1,        "hits": [            {                "_index": "xc_course",                "_type": "doc",                "_id": "4028e58161bcf7f40161bcf8b77c0000",                "_score": 1,                "_source": {                    "name": "Bootstrap開(kāi)發(fā)框架",                    "description": "Bootstrap是由Twitter推出的一個(gè)前臺(tái)頁(yè)面開(kāi)發(fā)框架,在行業(yè)之中使用較為廣泛。此開(kāi)發(fā)框架包含了大量的CSS、JS程序代碼,可以幫助開(kāi)發(fā)者(尤其是不擅長(zhǎng)頁(yè)面開(kāi)發(fā)的程序人員)輕松的實(shí)現(xiàn)一個(gè)不受瀏覽器限制的精美界面效果。",                    "studymodel": "201001"                }            }        ]    }}

          took:本次操作花費(fèi)的時(shí)間,單位為毫秒。
          timed_out:請(qǐng)求是否超時(shí)
          _shards:說(shuō)明本次操作共搜索了哪些分片
          hits:搜索命中的記錄
          hits.total :符合條件的文檔總數(shù) hits.hits :匹配度較高的前N個(gè)文檔
          hits.max_score:文檔匹配得分,這里為最高分
          _score:每個(gè)文檔都有一個(gè)匹配度得分,按照降序排列。
          _source:顯示了文檔的原始內(nèi)容。


          4 IK分詞器

          4.1測(cè)試分詞器

          在添加文檔時(shí)會(huì)進(jìn)行分詞,索引中存放的就是一個(gè)一個(gè)的詞(term),當(dāng)你去搜索時(shí)就是拿關(guān)鍵字去匹配詞,最終找到詞關(guān)聯(lián)的文檔。


          測(cè)試當(dāng)前索引庫(kù)使用的分詞器:

          post 發(fā)送:localhost:9200/_analyze
          {"text":"測(cè)試分詞器,后邊是測(cè)試內(nèi)容:spring cloud實(shí)戰(zhàn)"}

          結(jié)果如下:

          會(huì)發(fā)現(xiàn)分詞的效果將 “測(cè)試” 這個(gè)詞拆分成兩個(gè)單字“測(cè)”和“試”,這是因?yàn)楫?dāng)前索引庫(kù)使用的分詞器對(duì)中文就是單字分詞。


          4.2 安裝IK分詞器

          使用IK分詞器可以實(shí)現(xiàn)對(duì)中文分詞的效果。
          下載IK分詞器:(Github地址:https://github.com/medcl/elasticsearch-analysis-ik)
          下載zip:解壓,并將解壓的文件拷貝到ES安裝目錄的plugins下的ik目錄下

          測(cè)試分詞效果:

          發(fā)送:post localhost:9200/_analyze
          {"text":"測(cè)試分詞器,后邊是測(cè)試內(nèi)容:spring cloud實(shí)戰(zhàn)","analyzer":"ik_max_word" }


          4.3 兩種分詞模式

          ik分詞器有兩種分詞模式:ik_max_wordik_smart模式。
          1、ik_max_word
          會(huì)將文本做最細(xì)粒度的拆分,比如會(huì)將“中華人民共和國(guó)人民大會(huì)堂”拆分為“中華人民共和國(guó)、中華人民、中華、華人、人民共和國(guó)、人民、共和國(guó)、大會(huì)堂、大會(huì)、會(huì)堂等詞語(yǔ)。
          2、ik_smart
          會(huì)做最粗粒度的拆分,比如會(huì)將“中華人民共和國(guó)人民大會(huì)堂”拆分為中華人民共和國(guó)、人民大會(huì)堂。


          4.4 自定義詞庫(kù)

          如果要讓分詞器支持一些專(zhuān)有詞語(yǔ),可以自定義詞庫(kù)。
          iK分詞器自帶一個(gè)main.dic的文件,此文件為詞庫(kù)文件。

          打開(kāi)IKAnalyzer.cfg.xml配置一下

          在上邊的目錄中新建一個(gè)my.dic文件(注意文件格式為utf-8(不要選擇utf-8 BOM)
          可以在其中自定義詞匯:
          比如定義:

          重啟ES,測(cè)試分詞效果:

          發(fā)送:post localhost:9200/_analyze


          6 映射類(lèi)型

          6.1 映射維護(hù)方法

          1、查詢(xún)所有索引的映射:

          GET:http://localhost:9200/_mapping

          2、創(chuàng)建映射

          post 請(qǐng)求:http://localhost:9200/xc_course/doc/_mapping

          一個(gè)例子:

          {"properties": {"name": {"type": "text"},"description": {"type": "text"},"studymodel": {"type": "keyword"    }  }}

          3、更新映射
          映射創(chuàng)建成功可以添加新字段,已有字段不允許更新。
          4、刪除映射
          通過(guò)刪除索引來(lái)刪除映射。


          6.2 常用映射類(lèi)型

          6.2.1 text文本字段

          字符串包括text和keyword兩種類(lèi)型:
          1、text
          1)analyzer
          通過(guò)analyzer屬性指定分詞器。
          下邊指定name的字段類(lèi)型為text,使用ik分詞器的ik_max_word分詞模式。

          "name": {"type": "text","analyzer":"ik_max_word"}

          上邊指定了analyzer是指在索引和搜索都使用ik_max_word,如果單獨(dú)想定義搜索時(shí)使用的分詞器則可以通過(guò)search_analyzer屬性。


          對(duì)于ik分詞器建議是索引時(shí)使用ik_max_word將搜索內(nèi)容進(jìn)行細(xì)粒度分詞,搜索時(shí)使用
          ik_smart提高搜索精確性
          "name": {"type": "text","analyzer":"ik_max_word","search_analyzer":"ik_smart"}


          2)index
          通過(guò)index屬性指定是否索引。
          默認(rèn)為index=true,即要進(jìn)行索引,只有進(jìn)行索引才可以從索引庫(kù)搜索到。
          但是也有一些內(nèi)容不需要索引,比如:商品圖片地址只被用來(lái)展示圖片,不進(jìn)行搜索圖片,此時(shí)可以將index設(shè)置
          為false。
          刪除索引,重新創(chuàng)建映射,將pic的index設(shè)置為false,嘗試根據(jù)pic去搜索,結(jié)果搜索不到數(shù)據(jù)

          pic": {"type": "text","index":false}

          3)store
          是否在source之外存儲(chǔ),每個(gè)文檔索引后會(huì)在 ES中保存一份原始文檔,存放在"_source"中,一般情況下不需要設(shè)置store為true,因?yàn)樵赺source中已經(jīng)有一份原始文檔了。


          6.2.2 keyword關(guān)鍵字字段

          上邊介紹的text文本字段在映射時(shí)要設(shè)置分詞器,keyword字段為關(guān)鍵字字段,通常搜索keyword是按照整體搜索,所以創(chuàng)建keyword字段的索引時(shí)是不進(jìn)行分詞的,比如:郵政編碼、手機(jī)號(hào)碼、身份證等。keyword字段通常用于過(guò)慮、排序、聚合等。


          6.2.3 date日期類(lèi)型

          日期類(lèi)型不用設(shè)置分詞器。
          通常日期類(lèi)型的字段用于排序。
          1)format
          通過(guò)format設(shè)置日期格式
          例子:
          下邊的設(shè)置允許date字段存儲(chǔ)年月日時(shí)分秒、年月日及毫秒三種格式。

          {    "properties":{        "timestamp":{            "type":"date",            "format":"yyyy‐MM‐dd HH:mm:ss||yyyy‐MM‐dd"        }    }}


          6.2.4 數(shù)值類(lèi)型

          下邊是ES支持的數(shù)值類(lèi)型
          1、盡量選擇范圍小的類(lèi)型,提高搜索效率
          2、對(duì)于浮點(diǎn)數(shù)盡量用比例因子,比如一個(gè)價(jià)格字段,單位為元,我們將比例因子設(shè)置為100這在ES中會(huì)按 分 存儲(chǔ),映射如下:

          "price": {"type": "scaled_float","scaling_factor": 100}

          由于比例因子為100,如果我們輸入的價(jià)格是23.45則ES中會(huì)將23.45乘以100存儲(chǔ)在ES中。
          如果輸入的價(jià)格是23.456,ES會(huì)將23.456乘以100再取一個(gè)接近原始值的數(shù),得出2346。
          使用比例因子的好處是整型比浮點(diǎn)型更易壓縮,節(jié)省磁盤(pán)空間。

          總之一句話(huà),實(shí)踐出真知。在操作過(guò)程中遇到各種問(wèn)題解決問(wèn)題就對(duì)了。

          回復(fù) ElasticSearch  獲取 分布式搜索引擎elasticsearch

          往期精彩回顧
          送你100T視頻教程習(xí)資源免費(fèi)下載!
          PHP操作Elasticsearch
          PHP 使用 ElasticSearch 做搜索
          瀏覽 33
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产在线拍揄自揄拍无码男男 | 婷婷亚洲五月***久久 | 国产日本亚洲 | 欧美在线黄| 国产18女人水真多免费看 |