<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          開始步入Elasticsearch的世界:初探elasticsearch

          共 3941字,需瀏覽 8分鐘

           ·

          2021-08-28 09:56

          前言

          最近我參與了一個重構(gòu)項目,由于這個下項目并發(fā)量比較大,而且經(jīng)常出現(xiàn)MQ丟數(shù)據(jù)的問題,所以工單特別多,為了解決這個歷史遺留問題,我們開啟了為期兩個月的重構(gòu)之旅。

          目前,這個項目剛剛啟動,現(xiàn)在的核心架構(gòu),主要依托于redis,總的來說就是,所有的數(shù)據(jù)交互均依托于redis,不管是新增、查詢、更新、刪除等,都在redis上操作,然后通過一個DAL組件完成數(shù)據(jù)庫數(shù)據(jù)同步。就是這樣的架構(gòu),讓我們在開發(fā)的時候簡直要抓狂了,為了一個在數(shù)據(jù)庫層面帶索引的查詢,我們需要從redis中拿出所有數(shù)據(jù),然后從list中拿出我們需要的數(shù)據(jù),感覺操作太復雜了,但是沒辦法呀,架構(gòu)師就是這么定的。

          因為后期要把redis換成ES,所以我就提前把相關(guān)內(nèi)容學起來,以備不時之需。

          elasticsearch

          簡介

          elasticsearch是什么?根據(jù)它的字面意思,我們知道它和搜索有關(guān),官方給出的解釋是:

          Elasticsearch是一個分布式的免費開源搜索和分析引擎,適用于包括文本、數(shù)字、地理空間、結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)等在內(nèi)的所有類型的數(shù)據(jù)。ElasticsearchApache Lucene的基礎(chǔ)上開發(fā)而成,由 Elasticsearch N.V.(即現(xiàn)在的 Elastic)于 2010 年首次發(fā)布。Elasticsearch以其簡單的 REST 風格 API、分布式特性、速度和可擴展性而聞名,是 Elastic Stack的核心組件;Elastic Stack是一套適用于數(shù)據(jù)采集、擴充、存儲、分析和可視化的免費開源工具。人們通常將Elastic Stack 稱為 ELK Stack(代指Elasticsearch、LogstashKibana),目前 Elastic Stack包括一系列豐富的輕量型數(shù)據(jù)采集代理,這些代理統(tǒng)稱為 Beats,可用來向 Elasticsearch發(fā)送數(shù)據(jù)。

          簡單來說,elasticsearch可以用以下幾個關(guān)鍵字概括:

          • 分布式
          • 開源
          • 搜索和分析引擎

          做后端開發(fā)的小伙伴應該都清楚,在我們所有的系統(tǒng)中,基本上都是讀多寫少,所以真正制約一個系統(tǒng)性能是查詢,是搜索,如果有一款組件可以解決數(shù)據(jù)搜索的問題,那系統(tǒng)的性能肯定會得到飛速提升,而elasticsearch就是這樣一款組件。現(xiàn)階段,很多企業(yè)都在用es,目前被提及最多的是攜程,攜程是大規(guī)模在使用,單日索引數(shù)據(jù)條數(shù)600億,這就有點強了。

          好了,關(guān)于簡介就先到這里,更多信息各位小伙伴可以自己檢索,下面我們看下如何安裝使用es。

          下載

          訪問官方網(wǎng)站,選擇對應版本,然后下載。官方地址如下:

          https://www.elastic.co/cn/downloads/elasticsearch

          這里我直接選擇windows,各位小伙伴根據(jù)自己的操作系統(tǒng)進行選擇。

          安裝

          下載過程還是很快的,下載完成后直接解壓壓縮文件即可:

          下面我們簡單介紹下,elasticsearch的文件結(jié)構(gòu):

          • bin:存放可執(zhí)行文件,包括腳本等,一般我們用的第三方組件都是這樣的結(jié)構(gòu),比如zk、nacos

          • configelasticsearch的配置文件

          • jdk:這個各位小伙伴應該很熟悉,目前elasticsearch-7.14.0下的jdk版本比較高是16.0.1

          • ``libelasticsearch本身應該是基于java開發(fā)的,所以lib就是elasticsearch`要用到的包,其中也包括它自身應用的包

          • logs:存放運行日志,目前是空的

          • modules:這個應該是elasticsearch可以擴展的模塊,默認情況下好多模塊是不啟用的

          • plugins:這個應該是存放第三方擴展組件的,目前該文件夾是空的。

          好了,elasticsearch的目錄結(jié)構(gòu)我們暫時就說這么多,下面看下如何啟動elasticsearch。

          啟動

          啟動elasticsearch也很簡單,只需要執(zhí)行bin文件夾下的腳本即可:

          elasticsearch.bat

          如果啟動報錯,檢查下本地jdk版本,最好選擇16及以上版本,因為我本地安裝的就是16,所以啟動沒有報錯,但是在控制臺有如下提示:

          按照提示信息,elasticsearchJAVA_HOME需要設置為ES_JAVA_HOME,JAVA_HOME不推薦使用,應該是怕和jdk沖突吧。

          從啟動日志我們看出以下幾點:

          • 啟動的時候會加載modules的文件,具體各個模塊的用途,我們暫時先不研究

          • elasticsearch服務默認情況下會用到93009200,其中9300的端口協(xié)議未知,但是肯定不是http協(xié)議,9200是可以直接訪問的:

          • 訪問127.0.0.1:9200,如果返回值結(jié)果如上,則表明elasticsearch啟動成功。

          測試

          安裝啟動完成后,127.0.0.1:9200訪問也ok,說明es已經(jīng)部署ok,下面我們對它進行一些簡單測試。

          在前面的簡介中,我們知道es對外提供了 REST 風格 API,所以我們下面的測試都是基于REST接口進行的,為了方便我們后面就直接用curl工具( 或者你也可以用postman)進行操作了。

          REST

          下面是rest協(xié)議的幾種常用請求類別以及他們表示的含義,我們對es的操作也就是基于他們進行的:

          • PUT請求:表示更新
          • POST請求:表示寫
          • DELETE請求:表示刪除
          • GET請求:表示查詢
          • HEAD請求:與GET類似,但是不返回消息體
          • OPTIONS請求:獲取服務器支持的HTTP請求方法
          • TRACE請求:用來調(diào)試web服務器連接的HTTP方式
          • CONNECT請求:把服務器作為跳板,讓服務器代替用戶去訪問其它網(wǎng)頁,之后把數(shù)據(jù)原原本本的返回給用戶

          關(guān)于Rest協(xié)議我們暫時先說這么多,明天我們再詳細說明。

          以上這些請求中,es只支持GET,  PUT,  DELETE,  HEAD,其他的是不支持的:

          創(chuàng)建索引
          curl -X PUT 127.0.0.1:9200/syske

          返回結(jié)果:

          {
              "acknowledged":true,
              "shards_acknowledged":true,
              "index":"syske"
          }
          訪問索引
          curl -X GET 127.0.0.1:9200/syske

          返回結(jié)果:

            {
           "syske": {
            "aliases": {},
            "mappings": {},
            "settings": {
             "index": {
              "routing": {
               "allocation": {
                "include": {
                 "_tier_preference""data_content"
                }
               }
              },
              "number_of_shards""1",
              "provided_name""syske",
              "creation_date""1629869376742",
              "number_of_replicas""1",
              "uuid""cFI0E1VxQrKyxNiH1qZBfA",
              "version": {
               "created""7140099"
              }
             }
            }
           }
          }
          刪除索引
          curl -X DELETE 127.0.0.1:9200/syske

          返回結(jié)果

          {
              "acknowledged":true
          }

          說明:索引就類似于我們傳統(tǒng)數(shù)據(jù)庫中的庫,一個索引就對應一個數(shù)據(jù)庫。

          總結(jié)

          今天我們主要分享了es的下載、安裝和測試,整體內(nèi)容很簡單,也不需要任何復雜的配置,只要確保es可以在本地正常啟動即可。好了,es的簡單入門我們今天就先到這里,我們從明天開始學習es的其他基本術(shù)語和用法。

          - END -


          瀏覽 28
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品美女久久 | 正在播放精品 | 国产久久视频精品影视 | 久久精品国产亚洲AV无码蜜芽 | 日韩毛片免费 |