全文搜索引擎 Elasticsearch

Elasticsearch

Elasticsearch 是什么

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

Elasticsearch 官方地址

Elasticsearch 的优点

  • 分布式,无需人工搭建集群(solr 就需要人为配置,使用 Zookeeper 作为注册中心)
  • Restful 风格,一切 API 都遵循 Rest 原则,容易上手
  • 近实时搜索,数据更新在 Elasticsearch 中几乎是完全同步的。

Elasticsearch 应用场景

  • 大型分布式日志分析系统:如 ELK (Elasticsearch(存储日志)+logstash(收集日志)+kibana(展示数据))
  • 大型分布式搜索系统:如电商商品搜索,网盘搜索引擎

Elasticsearch 存储结构

Elasticsearch是文件存储,Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式。

1
2
3
4
5
6
7
8
9
10
11
{
"name": "John",
"sex": "Male",
"age": 25,
"birthDate": "2019/06/10",
"about": "I love to go rock climbing",
"interests":[
"sports",
"music"
]
}

关系数据库 ⇒ 数据库 ⇒ 表 ⇒ 行 ⇒ 列(Columns)
Elasticsearch ⇒ 索引(Index) ⇒ 类型(type) ⇒ 文档(Docments) ⇒ 字段(Fields)

Elasticsearch 安装

安装 jdk

由于 Elasticsearch 是由 Java 语言编写依赖 jdk。安装略。

elasticsearch-7.2.0 需要 jdk11

下载 Elasticsearch 安装包

官方地址

解压 Elasticsearch

1
2
tar -zxvf elasticsearch-7.2.0-linux-x86_64.tar.gz
mv elasticsearch-7.2.0 /home/data/elastic

修改 jvm.options

默认配置占用内存过大,修改512m

config/jvm.options

1
2
-Xms512m
-Xmx512m

修改 elasticsearch.yml

允许外网连接配置
config/elasticsearch.yml

1
2
3
4
5
6
7
8
# 数据目录位置需要新增
path.data: /home/data/elastic/data
# 日志目录位置需要新增
path.logs: /home/data/elastic/data
# 绑定到0.0.0.0,允许任何ip来访问
network.host: 192.168.2.129
# 对外服务的http端口,默认为9200
http.port: 9200

启动 Elasticsearch

因为安全问题 Elasticsearch 不让用 root 用户直接运行,所以要创建新用户。

  • 创建用户:useradd elastic
  • 给用户赋权:chown -R elastic:elastic /home/data/elastic/

切换用户启动

1
2
3
su elastic
cd /home/data/elastic/elasticsearch-7.2.0/bin
./elasticsearch

测试 Elasticsearch

curl http://localhost:9200 或者浏览器:http://192.168.2.129:9200

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
name: "bogon",
cluster_name: "elasticsearch",
cluster_uuid: "_na_",
version: - {
number: "7.2.0",
build_flavor: "default",
build_type: "tar",
build_hash: "508c38a",
build_date: "2019-06-20T15:54:18.811730Z",
build_snapshot: false,
lucene_version: "8.0.0",
minimum_wire_compatibility_version: "6.8.0",
minimum_index_compatibility_version: "6.0.0-beta1"
},
tagline: "You Know, for Search"
}

常见错误

  • [1]: max number of threads [1024] for user [elastic] is too low, increase to at least [4096]

解决方法:用户线程数不够,修改配置 vim /etc/security/limits.d/20-nproc.conf

1
* soft nproc 4096
  • 其它百度都能找到

Spring Boot 整合 Elasticsearch

持续更新中…

🐼 您的支持将鼓励我继续创作 🐼
0%