Elasticsearch,簡稱es,es是一個開源的高擴展的分布式全文檢索引擎
通過解壓Elasticsearch壓縮包,解壓即安裝,打開bin目錄的Elasticsearch.bat文件開啟服務器
注意Elasticsearch服務器中的9300是TCP通訊端口,集群間和TCP客戶端都執(zhí)行該端口
9200是http協(xié)議的RESTful接口
在谷歌瀏覽器的開發(fā)者模式中 安裝ES的圖形化界面插件
Elasticsearch的核心概念:
Elasticsearch是面向文檔(document)的,意味著它可以存儲整個對象或文檔
Elasticsearch? -> Indexes(索引) -> Types(類型) -> Documents(文檔) ->Fields(字段)
索引index
在Elasticsearch中存儲數(shù)據(jù)的行為叫做索引(indexing),
一個索引由一個名字來標識(必須全部小寫)
類型type
在一個索引中,可以定義一種或多種類型,相當于關系型數(shù)據(jù)庫中的表
一個類型是你索引的一個邏輯上的分類或分區(qū)
字段Field
相當于數(shù)據(jù)表字段,對不同屬性進行分類標識
映射mapping
是處理數(shù)據(jù)的方式和規(guī)則,針對于字段做的一些限制,字段的配置.
比如:某個字段的數(shù)據(jù)類型、默認值、分析器、是否被索引等等
文檔document
document一個文檔是一個可被索引的基礎信息單元,
文檔以JSON格式來表示,而JSON是一個到處存在的互聯(lián)網(wǎng)數(shù)據(jù)交互格式
使用Postman工具進行RESTful接口訪問
請求方法:<verb>? ? ? ? ? ? 適當?shù)腍TTP方法:GET? POST? PUT? HEAD? DELETE
請求地址:<Protocol>://<Host>:<Port>/<Path>?<Query_String>
Protocol:? http或者https
Host:? Elasticsearch 集群中任意節(jié)點的主機名,或者用 localhost 代表本地機器上的節(jié)點。
Port:??運行 Elasticsearch HTTP服務的端口號,默認是 9200
Path:? Path API的終端路徑 (例如 _count將返回集群中文檔數(shù)量)
Query_String:? 任意可選的查詢字符串參數(shù)(例如 ?pretty 將格式化地輸出JSON返回值)
請求體:<Body>? ? ? ? 一個JSON格式的請求體
創(chuàng)建索引

創(chuàng)建索引時配置映射

創(chuàng)建索引后配置映射

刪除索引

創(chuàng)建文檔

修改文檔

querystring查詢 (query_string是帶分詞器的查詢)
字符串查詢時,搜索"搜索服務器"和"大器"都可以搜索到數(shù)據(jù)

term查詢(term,關鍵詞匹配)
詞條查詢,搜索"搜索"卻沒有搜索到數(shù)據(jù)

總結:? ?創(chuàng)建索引庫,設置mapping,新建type,刪除索引? ? 文檔 CRUD
IK分詞器和Elasticsearch集成
當我們創(chuàng)建索引的時候,字段使用的是標準分詞器
IKAnalyzer是一個開源的,基于java語言開發(fā)的輕量級的中文分詞工具包
安裝IK分詞器:
將解壓后的Elasticsearch分詞器文件夾拷貝到Elasticsearch-5.6.8\plugins下,
并重命名文件夾為analysis-ik,重啟Elasticsearch即可加載IK分詞器
IK提供了兩個分詞算法 ik_smart 和 ik_max_word
ik_smart 為最少切分? ik_max_word為最細粒度劃分
ik_smart 最少切分:

ik_max_word 最細切分:


創(chuàng)建索引時,使用分詞器 ik_max_word

因為在創(chuàng)建索引的時候規(guī)定了分詞器類型,
所以在創(chuàng)建文檔時,會把內(nèi)容根據(jù)規(guī)定的分詞器進行分詞,
然后再進行querystring查詢,或者term查詢
也是把傳入的查詢條件,根據(jù)規(guī)定的分詞器進行分詞,然后對比
集群的相關:
集群cluster: 一個集群就是由一個或多個節(jié)點組織在一起,
它們共同持有整個數(shù)據(jù),并一起提供索引和搜索功能
一個集群由一個唯一的名字標識,這個名字默認就是“Elasticsearch”
節(jié)點node: 一個節(jié)點是集群中的一個服務,
作為集群的一部分,它存儲數(shù)據(jù),參與集群的索引和搜索功能
和集群類似,一個節(jié)點也是由一個名字來標識的