溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ElasticSearch的解析及原理是什么

發(fā)布時間:2021-12-06 09:20:10 來源:億速云 閱讀:147 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關ElasticSearch的解析及原理是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

一、ElasticSearch集群入門

A.什么是ElasticSearch

1.概念:

  • 索引(index):是ElasticSearch存放數(shù)據(jù)的地方

  • 文檔(document):是ElasticSearch中存儲的主要實體

  • 文檔類型:文檔類型可以區(qū)分不同的對象

  • 節(jié)點和集群:ElasticSearch支持在多臺協(xié)同工作的服務器上運行

  • 分片:節(jié)點的計算能力或硬件限制不夠時,可以將數(shù)據(jù)切分,每部分是一個單獨的Apache Lucene索引,稱為分片(shard)

  • 副本:為了提高查詢的吞吐量或?qū)崿F(xiàn)高可用性,可以啟用分片副本,是對原始分片的一個精確拷貝

2.狀態(tài)查看:

  • http://localhost:9200/

  • http://localhost:9200/_cluster/health?pretty

3.操作:通過REST操作數(shù)據(jù),GET、POST、PUT、DELETE

二、搜索數(shù)據(jù)

A.查詢和索引的過程

1.索引過程:準備發(fā)磅到ES的文檔并在索引中存儲文檔的過程

2.搜索過程:匹配滿足查詢條件的文檔的過程

3.分析過程:預備字段內(nèi)容,并將其轉(zhuǎn)換為可以寫放Lucene索引的詞項(term)的過程

  • 詞條化:輸入文本被分詞器轉(zhuǎn)換為一個詞條流

  • 過濾:若干個過濾器處理詞條流中的詞條

4.分析器:是帶有零個或多個過濾器的分詞器

B.查詢ElasticSearch

1.將多個簡單查詢封閉為一個JSON格式對象發(fā)送給ElasticSearch,稱為:查詢DSL

2.語法:

  • curl -XGET 'localhost:9200/library/book/_search?q=title:crime&pretty=true'

  • curl -XGET 'localhost:9200/library/book/_search?pretty=true' -d '{"query":{"term":{"title":"crime"}}}'

  • curl -XGET 'localhost:9200/library/book/_search?pretty=true' -d @query.json

C.基本查詢

1.term:匹配給定字段有某個詞項的文檔

2.terms:匹配包含某些詞項的文檔

3.match:提取參數(shù)中難寫的取值,分析這些值 ,基于它們構建適當?shù)牟樵?/p>

4.multi_match:與match類似,不同在于通過fields配置可作用于多個字段上

5.query_string:支持Apache Lucene所有的查詢語法

6.field:query_string查詢的簡化版本

7.ids:過濾返回的文檔,只得到其中包含指定標識符的文檔,作用在_uid字段

8.prefix:找到某個字段以給定前綴開始的文檔

9.fuzzy_like_this:查詢得到與給定內(nèi)容相似的所有文檔,基于模糊串,并選擇其產(chǎn)生的最好的區(qū)分詞項

10.fuzzy_like_this_field:與fuzzy_like_this類似,區(qū)別在于只作用在單個字段,不支持fields屬性

11.fuzzy:第三類模糊查詢通過計算給定詞項與文檔的編輯距離來得到結果,消耗CPU資源,對需要模糊匹配的場景比較有用

12.match_all:匹配索引中所有文檔的查詢

13.wildcard:允許我們在要查詢的內(nèi)容中使用符*和?,在查詢體部分與term非常相似,性能差

14.more_like_this:等到與所提供文本相似的文檔

15.more_like_this_field:與more_like_this相似,不同在于只作用在半單個字段,不支持fields屬性

16.range:可以在某個范圍內(nèi)在數(shù)值型字段和字符串型字段上查找文檔,只作用在單個字段上,查詢的參數(shù)封裝在字段的名稱中

D.過濾查詢結果

1.在query屬性下添加filter字段就可以在任何搜索中使用過濾器

2.range:將搜索范圍限制在字段取值在給定界限內(nèi)的文檔

3.exists:只選擇有指定字段的文檔

4.missing:與exists相反,還可以指定將哪些值作為空值處理

5.script:使用一個計算得到的值過過濾文檔

6.type:返回符合指定類型的所有文檔

7.limit:限制對給定查詢的每個分片返回的文檔數(shù)目

8.ids:適合需要過濾某些具體文檔的場景

9.bool、and、or和not可以組合過濾器

10.使用"_name"可以命名過濾器

E.復合查詢

1.bool:should可以匹配也可以不匹配、must必須匹配、must_no必須不匹配

2.boosting:將兩個查詢封裝在一起,并降低其中一個查詢所返回文檔的分值

3.constant_score:用于封裝另一個查詢(過濾器),被封閉查詢(過濾器)返回的每個文檔都得到一個恒定分值,允許我們嚴格控制賦予被查詢或過濾器匹配的每個文檔的分值

4.indices:需要在多個索引上執(zhí)行一個查詢時非常有用

5.custom_filters_score:允許我們封裝一個查詢和若干個過濾器

6.custom_boost_factor:允許我們封裝另外一個查詢,并將該查詢返回的文檔的分值乘以一個指定的因子

7.custom_score:通過script為另一個查詢定制分值

F.數(shù)據(jù)排序

1."sort":[{"_score":"desc"}],默認按得分最高的

G.使用腳本

1.script:包含腳本代碼;lang:指示腳本使用的語言,默認mvel;params:包含參數(shù)的對象

2.可用的對象:doc,訪問基于計算分值或者字段取值找到的當前文檔;_source,可以訪問當前文檔的源,以及在其中定義的取值 ;_fields,用于訪問文檔中的字段取值

三、擴展結構與搜索

1.關閉動態(tài)映射:dynamic:false

2.空間索引:geo_point

四、搜索優(yōu)化

1.boost權值影響排序結果

2.同義詞過濾器synonym

3.跨度查詢:span_term、span_first、span_near、span_or、span_not,指一個字段中開始和結束的詞條位置

五、組合索引、分析和搜索

1.父子映射:_parent

2.從其他系統(tǒng)獲取數(shù)據(jù):river

六、搜索之外

1.統(tǒng)計:query統(tǒng)計、filter統(tǒng)計、terms統(tǒng)計、range統(tǒng)計、histogram統(tǒng)計、statistical統(tǒng)計、terms_stats統(tǒng)計、geo_distance統(tǒng)計

2.相似

3.反查

七、管理集群

A.監(jiān)控集群狀態(tài)與健康狀況

1.健康狀態(tài):curl http://localhost:9200/_cluster/health?pretty

2.索引統(tǒng)計:curl http://localhost:9200/library/_stats?pretty

B.實例和集群狀態(tài)診斷工具

1.Bigdesk插件

2.elasticsearch-head插件

3.elasticsearch-paramedic插件

4.SPM工具

C.網(wǎng)關

1.可以使用本地、hadoop、Amazon s3

D.節(jié)點探索

1.默認允許使用zen探索(zen discovery),并提供了多播(multicast)和單播(unicast)兩種探索方法

八、問題處理

1.再平衡(rebalancing)是在集群中的各個不同的節(jié)點之間移動分片的過程

2.預熱:_warmer

看完上述內(nèi)容,你們對ElasticSearch的解析及原理是什么有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI