【下载】
官网:https://www.elastic.co/cn/downloads/elasticsearch
国内:https://elasticsearch.cn/download/
国内:https://thans.cn/mirror/elasticsearch.html
【环境】
操作系统:Ubuntu 18.04
【重要】
参考:https://thans.cn/elasticsearch/install.html
默认情况下,Elasticsearch不允许使用root权限账户运行
【概念】
参考:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html
Node 与 Cluster:
Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。
单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。
Index:
Elastic 会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。
所以,Elastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。
下面的命令可以查看当前节点的所有 Index。
curl -X GET 'http://localhost:9200/_cat/indices?v'
Document:
Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。
同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。
Document 使用 JSON 格式表示,下面是一个例子。
{ "user": "张三", "title": "工程师", "desc": "数据库管理" }
【安装】
参考:https://linuxize.com/post/how-to-install-elasticsearch-on-ubuntu-18-04/
参考:https://chaingng.github.io/post/elasticsearch_install/
更新包目录:
sudo apt update
安装 apt-transport-https 以访问HTTPS:
sudo apt install apt-transport-https
安装 OpenJDK 8 :
sudo apt install openjdk-8-jdk
验证版本:
java -version
输出:
openjdk version "1.8.0_232" OpenJDK Runtime Environment (build 1.8.0_232-8u232-b09-0ubuntu1~18.04.1-b09) OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
导入 Elasticsearch 源所需的 GPG key ,以保证此源被信任:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
将返回:
OK
添加 Elasticsearch 源:
sudo sh -c 'echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list'
安装 Elasticsearch :
sudo apt update && sudo apt install elasticsearch
添加到系统服务:
sudo systemctl enable elasticsearch.service
启动:
sudo systemctl start elasticsearch.service
验证:
curl -X GET "localhost:9200/"
返回:
{ "name" : "ES", "cluster_name" : "elasticsearch", "cluster_uuid" : "ZqfWzb0-SKq8uh1hE_1tlw", "version" : { "number" : "7.5.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "3ae9ac9a93c95bd0cdc054951cf95d88e1e18d96", "build_date" : "2019-12-16T22:57:37.835892Z", "build_snapshot" : false, "lucene_version" : "8.3.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
【配置】
创建 elasticsearch 用户:
groupadd elasticsearch && useradd -g elasticsearch -s /sbin/nologin -M elasticsearch
授予 apache 用户执行权限:
chown -R elasticsearch:elasticsearch /var/lib/elasticsearch/
设置用于http的端口:
编辑:/etc/elasticsearch/elasticsearch.yml
http.port: 9200
默认情况下,Elastic 只允许本机访问。如果需要远程访问:
编辑:/etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
如果社备上存在多个网络界面,可以通过指定界面IP,这样ES仅仅监听指定界面。
线上服务要设成具体的 IP:
编辑:/etc/elasticsearch/elasticsearch.yml
network.host: 123.123.123.123
重启服务使配置生效:
sudo systemctl restart elasticsearch
【插件】
参考:https://www.elastic.co/guide/en/elasticsearch/plugins/current/installation.html
语法:
sudo bin/elasticsearch-plugin install [plugin_name]
【排错】
报错:Job for elasticsearch.service failed because the control process exited with error code.
查看日志:
sudo journalctl -u elasticsearch
输出:
Jan 17 22:13:20 NameDog systemd[1]: Starting Elasticsearch... Jan 17 22:13:21 NameDog elasticsearch[1314]: OpenJDK 64-Bit Server VM warning: O Jan 17 22:13:22 NameDog systemd[1]: elasticsearch.service: Main process exited, Jan 17 22:13:22 NameDog systemd[1]: elasticsearch.service: Failed with result 's Jan 17 22:13:22 NameDog systemd[1]: Failed to start Elasticsearch.
参考:https://stackoverflow.com/questions/58656747/elasticsearch-job-for-elasticsearch-service-failed
参考:https://elasticsearch.cn/question/2468
编辑:Open /etc/elasticsearch/jvm.options
# Xms represents the initial size of total heap space # Xmx represents the maximum size of total heap space -Xms512m -Xmx512m
然后启动,成功;查看日志:
Jan 17 22:26:03 NameDog systemd[1]: Starting Elasticsearch... Jan 17 22:26:05 NameDog elasticsearch[1460]: OpenJDK 64-Bit Server VM warning: O Jan 17 22:26:33 NameDog systemd[1]: Started Elasticsearch.
原因:系统内存不足分配导致启动失败。