Elasticsearch快速入門

2022-07-18 19:12:08 字數 2531 閱讀 4610

mysql

estable

index(type)

rowdocument

column

field

schema

sqldsl

乙個es集群由乙個或多個節點(node)組成,每個集群都有乙個cluster name作為標識。

乙個es例項就是乙個 node,乙個機器可以有多個例項,所以並不能說一台機器就是乙個 node,大多數情況下每個node執行在乙個獨立的環境或虛擬機器上。

即一系列 documents 的集合。每個索引可以有多個type,不過7.0之後將會被廢棄,略過。

對映, 就像資料庫中的 schema ,描述了文件可能具有的字段或 屬性 、每個欄位的資料型別—比如 string, integer 或 date —以及lucene是如何索引和儲存這些欄位的。

es是分布式搜尋引擎,每個索引有乙個或多個分片,索引的資料被分配到各個分片上,相當於一桶水用了n個杯子裝。分片有助於橫向擴充套件,n個分片會被盡可能平均地(rebalance)分配在不同的節點上(例如你有2個節點,4個主分片(不考慮備份),那麼每個節點會分到2個分片,後來你增加了2個節點,那麼你這4個節點上都會有1個分片,這個過程叫 relocation,es感知後自動完成)。分片是獨立的,對於乙個 search request 的行為,每個分片都會執行這個 request。

可以理解為備份分片,相應地有 primary shard(主分片),主分片和備分片不會出現在同乙個節點上(防止單點故障),預設情況下乙個索引建立5個分片乙個備份(即5primary+5replica=10個分片)。如果你只有乙個節點,那麼5個 replica 都無法分配(unassigned),此時cluster status會變成yellow。

elasticsearch 使用一種稱為 倒排索引 的結構,它適用於快速的全文搜尋。乙個倒排索引由文件中所有不重複詞的列表構成,對於其中每個詞,有乙個包含它的文件列表。

document 中的資料是如何轉變成倒排索引的,以及查詢語句是如何轉換成乙個個詞(term)使高效率文字搜尋變得可行,這種轉換資料的過程就稱為文字分析(analysis)。

對於乙個索引,除非重建索引否則不能調整分片的數目(主分片數, number_of_shards),但可以隨時調整 replica 數(number_of_replicas)。

通過 docker 啟動乙個單節點集群

$ docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.7.2
使用 restful api 通過埠 9200 和 elasticsearch 進行通訊

$ curl -xhttp://localhost:9200/?-d ''
新建索引時可以指定設定或者對映,也可以不指定自動生成

$ put foo_index

, ...

}}

修改索引設定

$ put foo_index/_settings

修改索引對映

}刪除索引

$ delete foo_index
使用put新建文件項指定id為1

$ put foo_index/_doc/1

使用post可以不指定id來新建文件,自動生成id

$ post foo_index/_doc

檢視id=1的文件

$ get foo_index/_doc/1
使用curl -x get foo_index/_search -d 'body'來搜尋文件

match_all匹配所有文件,等價於空查詢{}

}}

mathc匹配包含,如果在乙個精確值的字段上使用match,例如數字、日期、布林或者乙個 not_analyzed 字串字段,那麼它將會精確匹配給定的值:

}}

多欄位match使用multi_match

}

term查詢被用於精確值匹配,這些精確值可能是數字、時間、布林或者那些 not_analyzed 的字串,term 查詢對於輸入的文字不分析 ,所以它將給定的值進行精確查詢

}}

terms查詢被用於匹配多個精確值

}}

合併(bool)查詢可以組合多種查詢方法

},

"must_not": },

"should": },

"filter": } }

}}

ElasticSearch快速入門

一.前言 上週公司在做乙個模組功能的時候 因為最後的結果資料量遠遠超過了預想的資料量 最後不得不把mysql換成elastic search,以前在學校的時候也沒有1接觸到這些東西 剛好這段時間處於專案空檔期 所以剛好趁機學習一下 二.介紹 elasticsearch是乙個分布式的restful風格...

Elastic Search快速上手(3) 搜尋

儲存好資料之後,便可通過restful api進行搜尋。詳細文件可參考 簡單搜尋 深入搜尋 注 對前文的乙個補充,可以使用analyze來檢視分詞器的分詞結果。get analyze 分詞結果 搜尋使用get方式,get請求的路徑中,可以包含目標索引 型別和文件 id。search 在所有的索引中搜...

Elasticsearch學習之快速入門案例

1.document資料格式 面向文件的搜尋分析引擎 1 應用系統的資料結構都是物件導向的,複雜的 2 物件資料儲存到資料庫中,只能拆解開來,變為扁平的多張表,每次查詢的時候還得還原回物件格式,相當麻煩 3 es是面向文件的,文件中儲存的資料結構,與物件導向的資料結構是一樣的,基於這種文件資料結構,...