怎样在Ubuntu上安装Elastic Search

2020年1月17日 | 分类: 【技术】

【下载】

官网: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/

参考:https://amon.org/ufw

设置用于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.

原因:系统内存不足分配导致启动失败。