ElasticSearch记录

date
Mar 16, 2021
slug
ES
status
Published
tags
ElasticSearch
summary
记录ElasticSearch安装过程
type
Post
Language

ElasticSearch记录

安装ElasticSearch(直接安装)

环境 Debian10
安装 JDK-8
下载 ElasticSearch-7.6.2
cd /

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:9200master_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版本保持下表关系,以免出错
Spring Data Elasticsearch
Elasticsearch
Spring Boot
7.6.2
2.3.x
6.8.6
2.2.x
6.2.2
2.1.x
5.5.0
2.0.x
2.4.0
1.5.x

添加依赖

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 接口继承 ElasticsearchRepository
public interface ProductRepository extends ElasticsearchRepository<Product, Long> {

    // 根据name搜索产品
    List<Product> queryProductByName(String name);

}

接口

ElasticsearchRepository 接口介绍如下表
method
description
保存
批量保存
删除
根据Id删除
删除全部

© chobit blog 2025