<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 一、什么是搜索? 百度:我們比如說想找尋任何的信息的時候,就會上百度去搜索一下,比如說找一部自己喜歡的電影,或者說找一本喜歡的書,或者找一條感興趣的新聞(提到搜索的第一印象) 垂直搜索(站內搜索) 互聯網的搜索:電商網站,招聘網站,新聞網站,各種app IT系統的搜索:OA軟件,辦公自動化軟件,會議管理,日程管理,項目管理,員工管理,搜索“張三”,“張三兒”,“張小三”;有個電商網站,賣家,后臺管理系統,搜索“IPhone”,訂單,“IPhone相關的訂單” 搜索,就是在任何場景下,找尋你想要的信息,這個時候,會輸入一段你要搜索的關鍵字,然后就期望找到這個關鍵字相關的有些信息 ## 二、如果用數據庫做搜索會怎么樣? 做軟件開發的話,或者對IT、計算機有一定的了解的話,都知道,數據都是存儲在數據庫里面的,比如說電商網站的商品信息,招聘網站的職位信息,新聞網站的新聞信息,等等吧。所以說,很自然的一點,如果說從技術的角度去考慮,如何實現如說,電商網站內部的搜索功能的話,就可以考慮,去使用數據庫去進行搜索。 1、比方說,每條記錄的指定字段的文本,可能會很長,比如說“商品描述”字段的長度,有長達數千個,甚至數萬個字符,這個時候,每次都要對每條記錄的所有文本進行掃描,懶判斷說,你包不包含我指定的這個關鍵詞(比如說“iphone 12”) 2、還不能將搜索詞拆分開來,盡可能去搜索更多的符合你的期望的結果,比如輸入“生化機”,就搜索不出來“生化危機” 用數據庫來實現搜索,是不太靠譜的。通常來說,性能會很差的。 ## 三、什么是全文檢索和Lucene? #### 1.什么是全文檢索,倒排索引? 網上很多解釋就不再贅述 #### 2.lucene 就是一個jar包,里面包含了封裝好的各種建立倒排索引,以及進行搜索的代碼,包括各種算法。我們就用java開發的時候,引入lucene jar,然后基于lucene的api進行去進行開發就可以了。用lucene,我們就可以去將已有的數據建立索引,lucene會在本地磁盤上面,給我們組織索引的數據結構。 ## 四、什么是Elasticsearch? ![](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0b9302f5543e4f1dab3ed0ab5c88fb7d~tplv-k3u1fbpfcp-watermark.image) ### ElasticSearch 核心概念 ### 1.Near Realtime(NRT) 近實時,兩個意思,從寫入數據到數據可以被搜索到有一個小延遲(大概1秒);基于es執行搜索和分析可以達到秒級 ### 2.Cluster 集群,包含多個節點,每個節點屬于哪個集群是通過一個配置(集群名稱,默認是elasticsearch)來決定的,對于中小型應用來說,剛開始一個集群就一個節點很正常 ### 3.Node 節點,集群中的一個節點,節點也有一個名稱(默認是隨機分配的),節點名稱很重要(在執行運維管理操作的時候),默認節點會去加入一個名稱為“elasticsearch”的集群,如果直接啟動一堆節點,那么它們會自動組成一個elasticsearch集群,當然一個節點也可以組成一個elasticsearch集群 ### 4\. Document&field 文檔,es中的最小數據單元,一個document可以是一條客戶數據,一條商品分類數據,一條訂單數據,通常用JSON數據結構表示,每個index下的type中,都可以去存儲多個document。一個document里面有多個field,每個field就是一個數據字段。 ### 5.Index 索引,包含一堆有相似結構的文檔數據,比如可以有一個客戶索引,商品分類索引,訂單索引,索引有一個名稱。一個index包含很多document,一個index就代表了一類類似的或者相同的document。比如說建立一個product index,商品索引,里面可能就存放了所有的商品數據,所有的商品document。 ### 6.Type(7.x后版本已刪除) 類型,每個索引里都可以有一個或多個type,type是index中的一個邏輯數據分類,一個type下的document,都有相同的field,比如博客系統,有一個索引,可以定義用戶數據type,博客數據type,評論數據type。 ### 7.shard 單臺機器無法存儲大量數據,es可以將一個索引中的數據切分為多個shard,分布在多臺服務器上存儲。有了shard就可以橫向擴展,存儲更多數據,讓搜索和分析等操作分布到多臺服務器上去執行,提升吞吐量和性能。每個shard都是一個lucene index。 ### 8.replica 任何一個服務器隨時可能故障或宕機,此時shard可能就會丟失,因此可以為每個shard創建多個replica副本。replica可以在shard故障時提供備用服務,保證數據不丟失,多個replica還可以提升搜索操作的吞吐量和性能。primary shard(建立索引時一次設置,不能修改,默認5個),replica shard(隨時修改數量,默認1個),默認每個索引10個shard,5個primary shard,5個replica shard,最小的高可用配置,是2臺服務器。 ### 9.elasticsearch核心概念 vs. 數據庫核心概念 | Elasticsearch | 數據庫 | | --- | --- | | Document | 行 | | Type | 表 | | Index | 庫 | ## 五、基礎分布式架構 ![](data:image/svg+xml;utf8,) ### 1、Elasticsearch對復雜分布式機制的透明隱藏特性 ~~~ Elasticsearch是一套分布式的系統,分布式是為了應對大數據量 隱藏了復雜的分布式機制 分片機制:(我們之前隨隨便便就將一些document插入到es集群中去了,我們有沒有care過數據怎么進行分片的,數據到哪個shard中去) cluster discovery:(集群發現機制,我們再次啟動一個es進程,這個進程作為一個node自動就發現了集群,并且加入了進去,還接受了部分數據,replica shard) shard負載均衡:(舉例,假設現在有3個節點,總共有25個shard要分配到3個節點上去,es會自動進行均勻分配,以保持每個節點的均衡的讀寫負載請求) shard副本: 請求路由,集群擴容,shard重分配 復制代碼 ~~~ ### 2、Elasticsearch的垂直擴容與水平擴容 ~~~ 垂直擴容:采購更強大的服務器,成本非常高昂,而且會有瓶頸,假設世界上最強大的服務器容量就是10T,但是當你的總數據量達到5000T的時候,你要采購多少臺最強大的服務器啊 水平擴容:業界經常采用的方案,采購越來越多的普通服務器,性能比較一般,但是很多普通服務器組織在一起,就能構成強大的計算和存儲能力 普通服務器:1T,1萬,100萬 強大服務器:10T,50萬,500萬 擴容對應用程序的透明性 復制代碼 ~~~ ### 3、增減或減少節點時的數據rebalance ~~~ 保持負載均衡 復制代碼 ~~~ ### 4、master節點 ~~~ 1、創建或刪除索引 2、增加或刪除節點 復制代碼 ~~~ ### 5、節點平等的分布式架構 ~~~ 1、節點對等,每個節點都能接收所有的請求 2、自動請求路由 3、響應收集 ~~~ 作者:Leo\_CX330 鏈接:https://juejin.cn/post/6908347505226809358 來源:掘金 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看