ElasticSearch记录
date
Mar 16, 2021
slug
ES
status
Published
tags
ElasticSearch
summary
记录ElasticSearch安装过程
type
Post
Language
ElasticSearch记录
安装ElasticSearch(直接安装)
环境
Debian10安装
JDK-8下载
ElasticSearch-7.6.2cd /
wget <https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2.zip>
tar -xzf unzip elasticsearch-7.6.2.zip
# 允许外网访问
vim /elasticsearch-7.6.2/config/elasticsearch.yml
# 添加
network.host: 0.0.0.0
踩坑1:不能用root方式运行
# 创建用户组es
groupadd es
# 创建用户esuser -g 指定组 -p 指定密码
useradd esuser -g es -p password
# 为esuser赋予文件夹下的所有文件权限
chown -R es:esuser /elasticsearch-7.6.2
踩坑2:调整jvm内存大小,防止内存过小启动失败
vim /elasticsearch-7.6.2/config/jvm.options
# 添加
-Xms128m
-Xmx128m
踩坑3:报错
- 启动报
bootstrap checks failed
vim /elasticsearch-7.6.2/config/elasticsearch.yml
# 添加
cluster.initial_master_nodes: ["node-1"]
- 访问
http://127.0.0.1:9200报master_not_discovered_exception
vim /elasticsearch-7.6.2/config/elasticsearch.yml
#添加
node.name: node-1
启动
ElasticSearch# 切换到es用户
su es
cd /elasticsearch-7.6.2
# 后台启动
./bin/elasticsearch -d
验证
curl <http://127.0.0.1:9200>
安装Kibana(Docker)
# 注意kibana版本要与ElasticSearch保持一致
docker pull kibana:7.6.2
# 启动kibana,注意ElasticSearch地址最好用服务器公网ip,避免遇到server is not ready yet
docker run --name kibana -e ELASTICSEARCH_URL=http://[yourip]:9200 -p 5601:5601 -d kibana:7.6.2
踩坑1:访问遇到 server is not ready yet
尽管在启动docker的时候配置了ELASTICSEARCH_URL,但好像没有用
# 查看日志
docker logs kibana
解决办法:
# 进入kibana容器
docker exec -it kibana /bin/bash
cd config
vi kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
#
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "<http://elasticsearch:9200>" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
将elasticsearch.hosts里的
elasticsearch 改成服务器公网ip# 重启kibana
docker restart kibana
访问
http://yourip:9200 应该会打开kibana界面了Spring Boot 集成 ElasticSearch
注意版本
服务器Elasticsearch版本最好与Spring Boot版本保持下表关系,以免出错
添加依赖
在
pom.xml 添加 dependency<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
添加参数
在
application.yml 添加elasticsearch:
rest:
uris: http://elasticsearch_url:9200
实体类
Product 实体类// indexName代表Elasticsearch的索引
@Document(indexName = "product")
public class Product implements Serializable {
// 表示是文档的id
@Id
private long id;
// 表示不会进行分词建立索引的类型
@Field(type = FieldType.Text)
private String name;
}
Repository
创建
ProductRepository 接口继承 ElasticsearchRepositorypublic interface ProductRepository extends ElasticsearchRepository<Product, Long> {
// 根据name搜索产品
List<Product> queryProductByName(String name);
}
接口
ElasticsearchRepository 接口介绍如下表method
description