網站首頁 編程語言 正文
什么是 Elasticsearch?
Elasticsearch 是一個分布式的開源搜索和分析引擎,適用于所有類型的數據,包括文本、數字、地理空間、結構化和非結構化數據。Elasticsearch 在Apache Lucene 的基礎上開發而成,由 Elasticsearch N.V.(即現在的 Elastic)于 2010 年首次發布。Elasticsearch 以其簡單的 REST 風格 API、分布式特性、速度和可擴展性而聞名,是 Elastic Stack 的核心組件;Elastic Stack 是適用于數據采集、充實、存儲、分析和可視化的一組開源工具。人們通常將Elastic Stack 稱為 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列豐富的輕量型數據采集代理,這些代理統稱為Beats,可用來向 Elasticsearch 發送數據。
Elasticsearch 的用途是什么?
Elasticsearch 在速度和可擴展性方面都表現出色,而且還能夠索引多種類型的內容,這意味著其可用于多種用例:
- 應用程序搜索
- 網站搜索
- 企業搜索
- 日志處理和分析
- 基礎設施指標和容器監測
- 應用程序性能監測
- 地理空間數據分析和可視化
- 安全分析
- 業務分析?
Elasticsearch 的工作原理是什么?
原始數據會從多個來源(包括日志、系統指標和網絡應用程序)輸入到 Elasticsearch 中。數據采集指在 Elasticsearch 中進行索引之前解析、標準化并充實這些原始數據的過程。這些數據在 Elasticsearch 中索引完成之后,用戶便可針對他們的數據運行復雜的查詢,并使用聚合來檢索自身數據的復雜匯總。在 Kibana 中,用戶可以基于自己的數據創建強大的可視化,分享儀表板,并對 Elastic Stack 進行管理。?
Elasticsearch 索引是什么?
Elasticsearch 索引指相互關聯的文檔集合。Elasticsearch 會以 JSON 文檔的形式存儲數據。每個文檔都會在一組鍵(字段或屬性的名稱)和它們對應的值(字符串、數字、布爾值、日期、數值組、地理位置或其他類型的數據)之間建立聯系。
Elasticsearch 使用的是一種名為倒排索引的數據結構,這一結構的設計可以允許十分快速地進行全文本搜索。倒排索引會列出在所有文檔中出現的每個特有詞匯,并且可以找到包含每個詞匯的全部文檔。
在索引過程中,Elasticsearch 會存儲文檔并構建倒排索引,這樣用戶便可以近實時地對文檔數據進行搜索。索引過程是在索引 API 中啟動的,通過此API 您既可向特定索引中添加 JSON 文檔,也可更改特定索引中的 JSON 文檔。
說明
由于我本機配置較低,無法開啟多臺虛擬機,ES的集群需要用到不同的ip,故而只搭建單機,不做集群。
一、目錄準備
mkdir /docker/es mkdir /docker/es/data mkdir /docker/es/config mkdir /docker/es/plugins
二、es配置準備
cd /docker/es vi elasticsearch.yml
使用以下配置:
# 集群名稱 cluster.name: elasticsearch-cluster # 節點名稱 node.name: es-node-1 # 綁定host,0.0.0.0代表當前節點的ip network.host: 0.0.0.0 # 設置其它節點和該節點交互的ip地址,如果不設置它會自動判斷,值必須是個真實的ip地址(本機ip) network.publish_host: 192.168.200.135 # 設置對外服務的http端口,默認為9200 http.port: 9200 # 設置節點間交互的tcp端口,默認是9300 transport.tcp.port: 9300 # 是否支持跨域,默認為false http.cors.enabled: true # 當設置允許跨域,默認為*,表示支持所有域名,如果我們只是允許某些網站能訪問,那么可以使用正則表達式。比如只允許本地地址。 /https?:\/\/localhost(:[0-9]+)?/ http.cors.allow-origin: "*" # 表示這個節點是否可以充當主節點 node.master: true # 是否充當數據節點 node.data: true # 所有主從節點ip:port #discovery.seed_hosts: ["192.168.200.135:9300"] #本地只有一個節點,無法正常啟動,先注釋 # 這個參數決定了在選主過程中需要 有多少個節點通信 預防腦裂 N/2+1 discovery.zen.minimum_master_nodes: 1 #初始化主節點 #cluster.initial_master_nodes: ["es-node-1"] #本地只有一個節點,無法正常啟動,先注釋
三、準備docker-compose.yml
vi docker-compose.yml
內容如下:
version: '3' services: elasticsearch: image: elasticsearch:6.8.13 restart: always hostname: es1 container_name: es-single volumes: - /docker/es/data:/usr/share/elasticsearch/data - /docker/es/plugins:/usr/share/elasticsearch/plugins - /docker/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - discovery.type=single-node ports: - '9200:9200' #java、集群通信端口 - '9300:9300' #http通信端口 privileged: true #環境變量
四、啟動容器
docker-compose up -d
五、查看
docker-compose ps
如果啟動是吧,可以使用docker container logs 容器id/es-single logs
查看啟動日志
參考:
docker部署redis/mongodb/rabbitmq中的es小節
如果出現啟動日志中出現java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
,需要給data目錄設置權限 chmod 777 /docker/es/data
原文鏈接:https://www.cnblogs.com/wugang/p/14493031.html
相關推薦
- 2024-03-07 基于配置類方式管理Bean
- 2024-02-28 自定義類模擬BufferedReader的readLine()功能
- 2022-07-24 Golang實現可重入鎖的示例代碼_Golang
- 2022-12-25 一文帶你了解Go語言中的指針和結構體_Golang
- 2022-05-31 利用Python進行數據清洗的操作指南_python
- 2022-10-23 Android事件分發機制示例分析_Android
- 2022-07-18 iptables防火墻
- 2022-03-19 Docker匿名掛載和具名掛載的具體使用_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支