ElasticSearch入門

      網友投稿 872 2025-03-31

      elasticsearch

      一 基礎概念

      Elaticsearch,簡稱為 ES, ES 是一個開源的高擴展的分布式全文搜索引擎, 是整個 ElasticStack 技術棧的核心。

      二 環境部署

      2.1 單節點

      # 拉取鏡像 docker pull elasticsearch:latest # 啟動 docker run --name es01 -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" elasticsearch:latest # 使用head客戶端鏈接 docker pull mobz/elasticsearch-head:5 # 啟動header 容器 docker run -d --name my-es_admin -p 9100:9100 mobz/elasticsearch-head:5 # curl測試訪問 curl http://127.0.0.1:9200/

      第一次打開瀏覽器header訪問,連接的服務地址是localhost:9200,修改為docker所在的ip。此時出現連接失敗,需要修改鏡像的elasticsearch.yml文件,添加

      http.cors.enabled: true http.cors.allow-origin: "*" # 重啟es docker restart es01 docker restart my-es-head

      2.2 集群

      # 拉取鏡像 docker pull elasticsearch:latest # 啟動 docker run --name es01 -d -p 9200:9200 -p 9300:9300 --restart=always -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" elasticsearch:7.4.0 docker run --name es02 -d -p 9201:9201 -p 9301:9301 --restart=always -e "ES_JAVA_OPTS=-Xms1g -Xmx1g" elasticsearch:7.4.0 # 使用head客戶端鏈接 docker pull mobz/elasticsearch-head:5 # 啟動header 容器 docker run -d --name my-es_admin -p 9100:9100 mobz/elasticsearch-head:5 # curl測試訪問 curl http://127.0.0.1:9200/

      三 測試

      3.1 創建

      創建一個索引(PUT)

      http://127.0.0.1:9200/shopping

      查看服務日志

      3.2 查看索引

      查看所有索引

      http://127.0.0.1:9200/_cat/indices?v

      查看單個索引

      http://127.0.0.1:9200/shopping

      3.4 文檔操作

      向 ES 服務器發 POST 請求 : http://127.0.0.1:9200/shopping/_doc/1,請求體JSON內容為:

      { "title":"小米手機", "category":"小米", "images":"http://www.gulixueyuan.com/xm.jpg", "price":3999.00 }

      查看索引下所有內容

      向 ES 服務器發 GET 請求 : http://127.0.0.1:9200/shopping/_search。

      局部修改

      局部修改

      修改數據時,也可以只修改某一給條數據的局部信息

      在 Postman 中,向 ES 服務器發 POST 請求 : http://127.0.0.1:9200/shopping/_update/1。

      請求體JSON內容為:

      { "doc": { "title":"小米手機", "category":"小米" } }

      刪除

      在 Postman 中,向 ES 服務器發 DELETE 請求 : http://127.0.0.1:9200/shopping/_doc/1

      3.5 查詢

      URL帶參查詢

      http://127.0.0.1:9200/shopping/_search?q=category:小米

      請求體帶參查詢

      接下帶JSON請求體,還是查找category為小米的文檔,在 Postman 中,向 ES 服務器發 GET請求 : http://127.0.0.1:9200/shopping/_search

      { "query":{ "match":{ "category":"小米" } } }

      制定字段查詢

      如果你想查詢指定字段,在 Postman 中,向 ES 服務器發 GET請求 : http://127.0.0.1:9200/shopping/_search,附帶JSON體如下:

      { "query":{ "match_all":{} }, "_source":["title"] }

      分頁查詢

      在 Postman 中,向 ES 服務器發 GET請求 : http://127.0.0.1:9200/shopping/_search,附帶JSON體如下:

      { "query":{ "match_all":{} }, "from":0, "size":2 }

      查詢排序

      如果你想通過排序查出價格最高的手機,在 Postman 中,向 ES 服務器發 GET請求 : http://127.0.0.1:9200/shopping/_search,附帶JSON體如下:

      { "query":{ "match_all":{} }, "sort":{ "price":{ "order":"desc" } } }

      四 集群信息

      單機 & 集群

      單臺 Elasticsearch 服務器提供服務,往往都有最大的負載能力,超過這個閾值,服務器

      性能就會大大降低甚至不可用,所以生產環境中,一般都是運行在指定服務器集群中。

      除了負載能力,單點服務器也存在其他問題:

      單臺機器存儲容量有限

      單服務器容易出現單點故障,無法實現高可用

      單服務的并發處理能力有限

      集群 Cluster

      一個集群就是由一個或多個服務器節點組織在一起,共同持有整個的數據,并一起提供索引和搜索功能。**一個 Elasticsearch 集群有一個唯一的名字標識,這個名字默認就是”elasticsearch”。這個名字是重要的,因為一個節點只能通過指定某個集群的名字,來加入這個集群。

      節點 Node

      集群中包含很多服務器, 一個節點就是其中的一個服務器。 作為集群的一部分,它存儲數據,參與集群的索引和搜索功能。

      一個節點也是由一個名字來標識的,默認情況下,這個名字是一個隨機的漫威漫畫角色的名字,這個名字會在啟動的時候賦予節點。這個名字對于管理工作來說挺重要的,因為在這個管理過程中,你會去確定網絡中的哪些服務器對應于 Elasticsearch 集群中的哪些節點。

      一個節點可以通過配置集群名稱的方式來加入一個指定的集群。默認情況下,每個節點都會被安排加入到一個叫做“elasticsearch”的集群中,這意味著,如果你在你的網絡中啟動了若干個節點,并假定它們能夠相互發現彼此,它們將會自動地形成并加入到一個叫做“elasticsearch”的集群中。

      在一個集群里,只要你想,可以擁有任意多個節點。而且,如果當前你的網絡中沒有運

      行任何 Elasticsearch 節點,這時啟動一個節點,會默認創建并加入一個叫做“elasticsearch”的

      集群。

      分片Shards

      一個索引可以存儲超出單個節點硬件限制的大量數據。比如,一個具有 10 億文檔數據

      的索引占據 1TB 的磁盤空間,而任一節點都可能沒有這樣大的磁盤空間。 或者單個節點處理搜索請求,響應太慢。為了解決這個問題,**Elasticsearch 提供了將索引劃分成多份的能力,每一份就稱之為分片。**當你創建一個索引的時候,你可以指定你想要的分片的數量。每個分片本身也是一個功能完善并且獨立的“索引”,這個“索引”可以被放置到集群中的任何節點上。

      分片很重要,主要有兩方面的原因:

      允許你水平分割 / 擴展你的內容容量。

      允許你在分片之上進行分布式的、并行的操作,進而提高性能/吞吐量。

      至于一個分片怎樣分布,它的文檔怎樣聚合和搜索請求,是完全由 Elasticsearch 管理的,對于作為用戶的你來說,這些都是透明的,無需過分關心。

      被混淆的概念是,一個 Lucene 索引 我們在 Elasticsearch 稱作 分片 。 一個Elasticsearch 索引 是分片的集合。 當 Elasticsearch 在索引中搜索的時候, 他發送查詢到每一個屬于索引的分片(Lucene 索引),然后合并每個分片的結果到一個全局的結果集。

      Lucene 是 Apache 軟件基金會 Jakarta 項目組的一個子項目,提供了一個簡單卻強大的應用程式接口,能夠做全文索引和搜尋。在 Java 開發環境里 Lucene 是一個成熟的免費開源工具。就其本身而言, Lucene 是當前以及最近幾年最受歡迎的免費 Java 信息檢索程序庫。但 Lucene 只是一個提供全文搜索功能類庫的核心工具包,而真正使用它還需要一個完善的服務框架搭建起來進行應用。

      目前市面上流行的搜索引擎軟件,主流的就兩款: Elasticsearch 和 Solr,這兩款都是基于 Lucene 搭建的,可以獨立部署啟動的搜索引擎服務軟件。由于內核相同,所以兩者除了服務器安裝、部署、管理、集群以外,對于數據的操作 修改、添加、保存、查詢等等都十分類似。

      副本Replicas

      在一個網絡 / 云的環境里,失敗隨時都可能發生,在某個分片/節點不知怎么的就處于

      離線狀態,或者由于任何原因消失了,這種情況下,有一個故障轉移機制是非常有用并且是強烈推薦的。為此目的, Elasticsearch 允許你創建分片的一份或多份拷貝,這些拷貝叫做復制分片(副本)。

      復制分片之所以重要,有兩個主要原因:

      在分片/節點失敗的情況下,提供了高可用性。因為這個原因,注意到復制分片從不與原/主要(original/primary)分片置于同一節點上是非常重要的。

      擴展你的搜索量/吞吐量,因為搜索可以在所有的副本上并行運行。

      總之,每個索引可以被分成多個分片。一個索引也可以被復制 0 次(意思是沒有復制)或多次。一旦復制了,每個索引就有了主分片(作為復制源的原來的分片)和復制分片(主分片的拷貝)之別。

      ElasticSearch入門

      分片和復制的數量可以在索引創建的時候指定。在索引創建之后,你可以在任何時候動態地改變復制的數量,但是你事后不能改變分片的數量。

      默認情況下,Elasticsearch 中的每個索引被分片 1 個主分片和 1 個復制,這意味著,如果你的集群中至少有兩個節點,你的索引將會有 1 個主分片和另外 1 個復制分片(1 個完全拷貝),這樣的話每個索引總共就有 2 個分片, 我們需要根據索引需要確定分片個數。

      分配Allocation

      將分片分配給某個節點的過程,包括分配主分片或者副本。如果是副本,還包含從主分片復制數據的過程。這個過程是由 master 節點完成的。

      五 系統架構-簡介

      一個運行中的 Elasticsearch 實例稱為一個節點,而集群是由一個或者多個擁有相同

      cluster.name 配置的節點組成, 它們共同承擔數據和負載的壓力。當有節點加入集群中或者從集群中移除節點時,集群將會重新平均分布所有的數據。

      當一個節點被選舉成為主節點時, 它將負責管理集群范圍內的所有變更,例如增加、

      刪除索引,或者增加、刪除節點等。 而主節點并不需要涉及到文檔級別的變更和搜索等操作,所以當集群只擁有一個主節點的情況下,即使流量的增加它也不會成為瓶頸。 任何節點都可以成為主節點。我們的示例集群就只有一個節點,所以它同時也成為了主節點。

      作為用戶,我們可以將請求發送到集群中的任何節點 ,包括主節點。 每個節點都知道

      任意文檔所處的位置,并且能夠將我們的請求直接轉發到存儲我們所需文檔的節點。 無論我們將請求發送到哪個節點,它都能負責從各個包含我們所需文檔的節點收集回數據,并將最終結果返回給客戶端。 Elasticsearch 對這一切的管理都是透明的。

      ##參考鏈接

      https://blog.csdn.net/u011863024/article/details/115721328

      Elasticsearch JSON

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:制造企業安全生產注意事項(工廠生產安全知識)
      下一篇:excel表格開根號怎么算
      相關文章
      亚洲人成网站在线观看播放青青| 亚洲婷婷在线视频| 97se亚洲国产综合自在线| 亚洲综合综合在线| 日韩精品亚洲人成在线观看| 亚洲日本一区二区| 国产亚洲综合网曝门系列| 亚洲精品少妇30p| 久久亚洲综合色一区二区三区 | 亚洲人成77777在线观看网| 亚洲国产高清美女在线观看| 亚洲精品电影天堂网| 7777久久亚洲中文字幕蜜桃| 亚洲日韩中文字幕天堂不卡| 亚洲午夜精品国产电影在线观看| 亚洲日产2021三区在线| 亚洲av产在线精品亚洲第一站| 亚洲一区二区三区在线| 亚洲精品456人成在线| 亚洲乱色熟女一区二区三区蜜臀| 亚洲精品无码久久久久YW| 欧美色欧美亚洲另类二区| 国产亚洲美女精品久久久久| 亚洲精品在线视频| 亚洲中文字幕在线观看| 亚洲国产精品VA在线观看麻豆 | 亚洲av成人一区二区三区观看在线 | 亚洲综合小说另类图片动图 | 亚洲av无码专区亚洲av不卡| 男人的天堂av亚洲一区2区| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 午夜在线亚洲男人午在线| 亚洲国产综合久久天堂| 中文字幕亚洲日本岛国片| 国产亚洲精AA在线观看SEE| 亚洲视频在线视频| 亚洲av无码片区一区二区三区| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品亚洲综合天堂夜夜| 国产精品亚洲αv天堂无码| 亚洲爆乳无码专区|