日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

了解一下Elasticsearch的基本概念

發布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 了解一下Elasticsearch的基本概念 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

了解一下Elasticsearch的基本概念

一、前文介紹

Elasticsearch(簡稱ES)是一個基于Apache Lucene(TM)的開源搜索引擎,無論在開源還是專有領域,Lucene 可以被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。注意,Lucene 只是一個庫。想要發揮其強大的作用,你需使用 Java 并要將其集成到你的應用中。

Lucene 非常復雜,你需要深入的了解檢索相關知識來理解它是如何工作的,就跟學習 springmvc 之前先從 servlet 開始,繁瑣復雜的工作,Solor、Elasticsearch 應由而生, 其使用 Java 編寫并使用 Lucene 來建立索引并實現搜索功能,但是它的目的是通過簡單連貫的 RESTful API 讓全文搜索變得簡單并隱藏 Lucene 的復雜性。

重要特性:

  • 分布式的實時文件存儲,每個字段都被索引并可被搜索
  • 實時分析的分布式搜索引擎
  • 可以擴展到上百臺服務器,處理PB級結構化或非結構化數據

基本概念:

索引(indices)-------------------Databases 數據庫
類型(type)----------------------Table 數據表
文檔(Document)---------------Row 行
字段(Field)---------------------Columns 列

詳細說明:

概念說明
索引庫(indices)indices是index的復數,代表許多的索引,
類型(type)類型是模擬mysql中的table概念,一個索引庫下可以有不同類型的索引,比如商品索引,訂單索引,其數據格式不同。不過這會導致索引庫混亂,因此未來版本中會移除這個概念
文檔(document)存入索引庫原始的數據。比如每一條商品信息,就是一個文檔
字段(field)文檔中的屬性
映射配置(mappings)字段的數據類型、屬性、是否索引、是否存儲等特性

要注意的是:Elasticsearch 本身就是分布式的,因此即便你只有一個節點,Elasticsearch 默認也會對你的數據進行分片和副本操作,當你向集群添加新數據時,數據也會在新加入的節點中進行平衡。

二、Elasticsearch安裝[windows]

如下主要針對 windows 環境下的 Elasticsearch 學習。

下載地址:https://www.elastic.co/cn/products/

解壓后,進入 bin/ 目錄,雙擊執行 elasticsearch .bat

Elasticsearch 啟動后可以看到綁定了兩個端口:

  • 9300:集群節點間通訊接口【tcp連接方式,性能優于http】
  • 9200:客戶端訪問接口【接收http請求】

9200,我們可以通過瀏覽器直接訪問,9300 則不可以直接訪問。

三、Kibana 安裝

Kibana 是一個基于 Node.js 的 Elasticsearch 索引庫數據統計工具,可以利用 Elasticsearch 的聚合功能,生成各種圖表,如柱形圖,線狀圖,餅圖等。

而且還提供了操作 Elasticsearch 索引數據的控制臺,并且提供了一定的API提示,非常有利于我們學習 Elasticsearch 的語法。

1、配置

我們可以把 Kibana 當成,durid 連接池對于 mysql 的可視化來理解。

下載地址:https://www.elastic.co/cn/downloads/kibana

解壓后,進入安裝目錄下的 config 目錄,修改 kibana.yml 文件:

修改elasticsearch服務器的地址,去掉原來的注釋:

elasticsearch.url:?"http://localhost:9200"

Kibana 的監聽端口為 5601:http://127.0.0.1:5601 瀏覽器打開如下圖所示:

Dev Tools 相當于一個命令行窗口工具,帶提示,Elasticsearch 執行的數據格式為 json,舉例:

POST?_analyze
{
??"analyzer":?"ik_max_word",
??"text":?????"我喜歡編程"
}

四、ik 分詞器安裝

由于 Elasticsearch 在拆分單詞時,是按空格來分,即 hello world 分為 hello 和 world,這是沒問題的,但是在拆分中文時也是按照一個漢字一個漢字來拆分。即“我喜歡編程”分為 我、喜、歡、編、程 5個字符,所以就需要用到 IK 分詞器這個插件來進行拆分。

Lucene 的 IK 分詞器早在 2012 年已經沒有維護了,現在我們要使用的是在其基礎上維護升級的版本,并且開發為 ElasticSearch 的集成插件了,與 Elasticsearch 一起維護升級,版本也保持一致。

IK下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

注意 ES 與 IK 版本對應地址:https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x

將 zip 包,解壓到 Elasticsearch 目錄的 plugins 目錄中:

然后重啟 Elasticsearch

五、基本概念-詳細了解

上文也了解到 ES 操作的數據為 json,實際項目中,比如 springboot 中,無須操作 json,都是面向對象編程,但是,學習其實際原理固然重要。

5.1、創建索引

創建索引的請求格式:

  • 請求方式:PUT
  • 請求路徑:/索引庫名
  • 請求參數:json格式:
{
???"settings":?{
??????"number_of_shards":?3,
??????"number_of_replicas":?2
???}
}
  • settings:索引庫的設置
  • number_of_shards: 分片數量
  • number_of_replicas:副本數量

示例:

5.2、查看索引設置

語法

Get請求可以幫我們查看索引信息,格式:

GET?/索引庫名
5.3、刪除索引

刪除索引使用DELETE請求

語法

DELETE?/索引庫名

六、映射配置

6.1、創建映射字段

語法

請求方式依然是PUT

PUT?/索引庫名/_mapping/類型名稱
{
??"properties":?{
????"字段名":?{
??????"type":?"類型",
??????"index":?true
??????"store":?true
??????"analyzer":?"分詞器"
????}
??}
}
  • 類型名稱:就是前面將的type的概念,類似于數據庫中的不同表
    字段名:任意填寫 ,可以指定許多屬性,例如:
  • type:類型,可以是text、long、short、date、integer、object等
  • index:是否索引,默認為true
  • store:是否存儲,默認為false
  • analyzer:分詞器,這里的ik_max_word即使用ik分詞器

示例

發起請求:

PUT?niceyoo2/_mapping/goods
{
??"properties":?{
????"title":?{
??????"type":?"text",
??????"analyzer":?"ik_max_word"
????},
????"images":?{
??????"type":?"keyword",
??????"index":?"false"
????},
????"price":?{
??????"type":?"float"
????}
??}
}

響應結果:

{
??"acknowledged":?true
}
6.2、查看映射關系

語法:

GET?/索引庫名/_mapping

示例:

GET?/niceyoo2/_mapping

響應:

{
??"niceyoo2":?{
????"mappings":?{
??????"goods":?{
????????"properties":?{
??????????"images":?{
????????????"type":?"keyword",
????????????"index":?false
??????????},
??????????"price":?{
????????????"type":?"float"
??????????},
??????????"title":?{
????????????"type":?"text",
????????????"analyzer":?"ik_max_word"
??????????}
????????}
??????}
????}
??}
}

七、字段屬性詳解

7.1、type

Elasticsearch 中支持的數據類型非常豐富:

我們說幾個關鍵的:

String類型,又分兩種:

  • text:可分詞,不可參與聚合
  • keyword:不可分詞,數據會作為完整字段進行匹配,可以參與聚合

Numerical:數值類型,分兩類:

  • 基本數據類型:long、interger、short、byte、double、float、half_float
  • 浮點數的高精度類型:scaled_float
    • 需要指定一個精度因子,比如10或100。elasticsearch會把真實值乘以這個因子后存儲,取出時再還原。

Date:日期類型

elasticsearch 可以對日期格式化為字符串存儲,但是建議我們存儲為毫秒值,存儲為 long,節省空間。

7.2、index

index影響字段的索引情況。

  • true:字段會被索引,則可以用來進行搜索。默認值就是true
  • false:字段不會被索引,不能用來搜索

index的默認值就是true,也就是說你不進行任何配置,所有字段都會被索引。

但是有些字段是我們不希望被索引的,比如商品的圖片信息,就需要手動設置index為false。

7.3、store

是否將數據進行額外存儲。

在學習lucene和solr時,我們知道如果一個字段的store設置為false,那么在文檔列表中就不會有這個字段的值,用戶的搜索結果中不會顯示出來。

但是在Elasticsearch中,即便store設置為false,也可以搜索到結果。

原因是Elasticsearch在創建文檔索引時,會將文檔中的原始數據備份,保存到一個叫做_source的屬性中。而且我們可以通過過濾_source來選擇哪些要顯示,哪些不顯示。

而如果設置store為true,就會在_source以外額外存儲一份數據,多余,因此一般我們都會將store設置為false,事實上,store的默認值就是false。

7.4、boost

激勵因子,這個與lucene中一樣

其它的不再一一講解,用的不多,大家參考官方文檔:

最后

下篇帶大家詳細了解 elasticsearch 中的

  • 增:隨機id、自定義id
  • 刪:帶條件刪除
  • 改:帶條件修改
  • 查:帶條件查詢

如果文章有錯的地方歡迎指正,大家互相留言交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關注微信公眾號:niceyoo

posted @ 2019-05-14 21:42 niceyoo 閱讀(...) 評論(...) 編輯 收藏

總結

以上是生活随笔為你收集整理的了解一下Elasticsearch的基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。