Elasticsearch 版本:5.4
Elasticsearch快速入門第1篇:Elasticsearch入門
- ##Elasticsearch快速入門第2篇:Elasticsearch與Kibana安裝
- Elasticsearch快速入門第3篇:Elasticsearch索引與文件作業 ##Elasticsearch快速入門第4篇: Elasticsearch文件查詢
是一個高擴充的開源全文搜尋和分析引擎。它可以快速地、近實時的存儲,搜尋和分析大規模的數據。一般用作底層引擎/技術,為具有複雜搜尋功能和要求的應用提供強有力的支撐。
Elasticsearch能夠被用在這些地方:
- 假設有一個線上的商店網站,為了讓顧客搜尋到銷售的產品。在這種情況下,可以使用
- Elasticsearch
來儲存你的整個產品目錄和庫存,並提供搜尋以及自動給他們一些建議。
假設想要收集日誌或交易數據,透過分析、挖掘來尋找趨勢,統計,總結或異常。在這種情況下,可以使用 - LogStash
(Elasticsearch/Logstash/Kibana堆疊的一部分)去收集、匯總並解析你的數據,然後透過 LogStash把這些資料遞交給 Elasticsearch 。一旦 Elasticsearch 取得了數據,你就可以進行搜尋並且聚合你感興趣的資訊。
假設運行一個價格提醒平台,讓價格精明的客戶指定一個規則,如「我有興趣購買一個特定的電子小配件,如果下個月內,有賣家的價格低於$x,我想得到通知」。在這種情況下,你可以把賣家的價格遞交到 - Elasticsearch
,使用反向搜尋(過濾器),將價格變動與客戶查詢進行匹配,一旦發現匹配結果,則通知客戶。
假設有分析(商業智慧)需求,希望快速調查,分析,視覺化和在大量(考慮百萬或十億筆記錄)的數據中查找一個特設的問題。在這種情況下,你可以使用 - Elasticsearch
儲存數據,然後使用 Kibana ( Elasticsearch 堆疊的一部分)建立自訂儀表板,以便視覺化對你重要的數據。另外,你可以使用 Elasticsearch 聚合功能,依靠資料執行複雜的商業智慧查詢。
對於本教程的其餘部分,會透過
的啟動和運行過程指導你初步認識它,並展示一些基本的操作,例如:索引,搜尋和修改資料。本教程的結束後,你將會對 Elasticsearch 是什麼以及它的工作原理有了較深的認識。希望你能受到啟發,既能使用它建立複雜的搜尋應用程式又能從你的數據中發掘有用的東西。
基本概念(Basic Concepts)#有一些概念是
Elasticsearch ##的核心。 從一開始就理解這些概念將大大有助於未來的學習。
近實時(NRT)
#Elasticsearch是一個接近即時的搜尋平台。這意味著從將文件索引的時間到變得可搜尋的時間只有輕微的延遲(通常為1秒)。
叢集(Cluster)叢集是一個或多個節點(伺服器)的集合,它們聯合起來保存所有的數據,並且可以在所有的節點上進行索引和搜尋操作。叢集由唯一的名稱標識,預設是"elasticsearch"。由於一個節點僅僅可以屬於一個集群,並根據集群名稱加入集群。所以該名字很重要。
不要在不同的環境中使用一樣的叢集名字,否則可能會導致加入錯誤的叢集。例如,你可以分別在開發,過渡,生產環境中使用群集名稱,logging-dev , logging-stage 和 logging-prod
。注意,只有一個節點的叢集是有效且完美的。也可以擁有多個獨立的集群,每個集群都有自己獨特的集群名稱。
節點(Node)
節點是一個單一的伺服器,是叢集的一部分,儲存數據,並參與叢集的索引和搜尋。和叢集一樣,節點也是透過唯一的名字去區分,預設名字是一個隨機的UUID(Universally Unique IDentifier),當伺服器啟動的時候就會設定到該節點。如果不想使用預設值,你也可以自訂節點的名稱。名稱對管理員來說十分重要,它可以幫助你區分出叢集中的各個伺服器和哪些節點相對應。
節點透過配置叢集的名稱,就可以加入指定的叢集。預設情況下,節點都加入一個叫 elasticsearch 的集群,這意味著如果你在網路中啟動了大量的節點並且假如他們都能互相通訊的話,那麼他們將會被自動的加入一個名字叫 elasticsearch 的集群。
索引(Index)
#索引是具有某種相似特徵的文件的集合。例如,客戶資料索引,產品目錄索引,以及訂單資料索引。索引由名稱(必須全部為小寫)標識,此名稱用於在對文件進行索引、搜尋、更新和刪除操作時使用。在單一叢集中,您可以根據需要定義任意數量的索引。
類型(Type)
一個索引可以定義一個或多個型別。類型是索引的邏輯類別/分割區,你怎麼理解都行。通常,為具有一組公共欄位的文件定義一種類型。例如,一個部落格平台,假如將所有資料儲存在單一索引中。在此索引中,可以定義使用者資料類型,部落格資料類型以及評論資料類型。
文件(document)
文件是可以被索引的基本單位。例如,用一個文件儲存某個客戶的數據,或儲存單一產品的數據,或儲存單一訂單的數據。文檔使用JSON表示。在索引/類型中可以儲存大量文件。值得注意的是,儘管文件本質上是存放在索引中,但實際上是被索引/分配到索引中的一個類型中。
分片和副本(shards & replicas)
一個索引可能儲存海量數據,有可能超過單一節點的硬碟容量。例如,某個索引儲存了10億個文檔,佔用1TB的硬碟空間,單一節點的硬碟有可能不足以儲存那麼大的資料量,就算可以儲存下,但是可能會降低伺服器處理搜尋請求的速度。
為了解決這個問題, elasticsearch 提供了分片功能,即將索引細分。建立索引時,可以簡單地定義所需的分片數。每個分片本身就具備索引的全部功能,可以存放在叢集中的任何一個節點。
分片很重要,主要原因有兩個:
它允許您水平分割/縮放您的內容量
#它允許你並行地分發操作到多個節點的分片上,從而可以提升效能或吞吐量。
碎片分發的機制,以及它的文件如何匯總回到搜尋請求中完全由Elasticsearch管理,並且對使用者來說是透明的。
在網路/雲端環境中,任何時候都可能發生故障,分片會非常有用,並強烈建議使用故障轉移機制,以防止分片/節點離線或消失。為此, elasticsearch 允許您將索引的分片複製一份或多份,也就是所謂的複製分片,或簡寫為副本。
副本很重要,主要原因有兩個:
如果分片/節點發生故障,則可提供高可用性。因此,要注意,副本與其複製的原始/主分片不能分配在同一節點上。
它允許您擴展搜尋量/吞吐量,因為可以對所有副本並行執行搜尋。
總而言之,每個索引可以分成多個分片。每個索引也可以複製零次(意味著沒有副本)或多次。一旦複製,每個索引將具有主分片(複製的原始分片)和副分片(主分片的副本)。可以在建立索引時根據索引定義碎片和副本的數量。建立索引後,您可以隨時動態變更副本數,但不能變更事後的分片數。
預設情況下,每個索引都會被分配5個主分片和1一個複製分片,這表示如果你的叢集中有兩個節點,你的索引將會有5個主分片和5個複製分片,總共有10個分片。
每個elasticsearch 分片是一個Lucene index ,一個Lucene 索引中可以有很多的文檔,截至LUCENE-5843 ,最多2,147,483,519(= Integer.MAX_VALUE - 128) 個文檔. 可以使用_cat/shards api監視分片大小。
總結
1、為什麼不用關係型資料庫做搜尋?因為用資料庫來實現搜索,效能會很差,不能進行分詞搜尋。
2、什麼是全文檢索、倒排索引和Lucene?前人已經總結過了,請參考【手把手教你全文檢索】Apache Lucene初探
3、Elasticsearch的特點
可以分佈式集群,對海量數據進行近實時的處理;
對使用者而言,開箱即用,非常簡單。如果資料量不大,操作不會太複雜;
具有關係型資料庫沒有的功能,例如全文檢索,同義詞處理,相關度排名,複雜資料分析,海量資料的近實時處理;
基於lucene,隱藏了複雜性,提供簡單易用的restful api介面、java api介面
4、 elasticsearch的核心概念
Cluster:叢集包含多個節點,每個節點屬於哪個叢集是透過設定來決定的(預設是elasticsearch)
-
Node:叢集中的一個節點,節點預設會自動加入名叫"elasticsearch"的叢集。一個elasticsearch服務就是一個節點,例如一台機器啟動兩個es服務,就有兩個節點。
Index:索引,相當於mysql的資料庫,包含一堆有相似結構的文件資料。
Type:類型,相當於mysql的表,index中的一個邏輯資料分類。
document:文檔,相當於mysql表中的一行記錄,是es中的最小資料單元。
shard:分片,單一機器無法儲存大量數據,es可以將一個索引中的資料切分為多個shard,分佈在多台伺服器上儲存。
replica:副本,為了防止宕機,shard遺失,所以最小的高可用配置,是2台伺服器。
以上是Elasticsearch是什麼? Elasticsearch 能夠被用在什麼地方?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

C#.NET應用的測試策略包括單元測試、集成測試和端到端測試。 1.單元測試確保代碼的最小單元獨立工作,使用MSTest、NUnit或xUnit框架。 2.集成測試驗證多個單元組合的功能,常用模擬數據和外部服務。 3.端到端測試模擬用戶完整操作流程,通常使用Selenium進行自動化測試。

C#高級開發者面試需要掌握異步編程、LINQ、.NET框架內部工作原理等核心知識。 1.異步編程通過async和await簡化操作,提升應用響應性。 2.LINQ以SQL風格操作數據,需注意性能。 3..NET框架的CLR管理內存,垃圾回收需謹慎使用。

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

C#.NET是構建微服務的熱門選擇,因為其生態系統強大且支持豐富。 1)使用ASP.NETCore創建RESTfulAPI,處理訂單創建和查詢。 2)利用gRPC實現微服務間的高效通信,定義和實現訂單服務。 3)通過Docker容器化微服務,簡化部署和管理。

C#和.NET的安全最佳實踐包括輸入驗證、輸出編碼、異常處理、以及身份驗證和授權。 1)使用正則表達式或內置方法驗證輸入,防止惡意數據進入系統。 2)輸出編碼防止XSS攻擊,使用HttpUtility.HtmlEncode方法。 3)異常處理避免信息洩露,記錄錯誤但不返回詳細信息給用戶。 4)使用ASP.NETIdentity和Claims-based授權保護應用免受未授權訪問。

C 語言中冒號 (':') 的含義:條件語句:分隔條件表達式和語句塊循環語句:分隔初始化、條件和增量表達式宏定義:分隔宏名和宏值單行註釋:表示從冒號到行尾的內容為註釋數組維數:指定數組的維數


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)