# ruoyi-cloud-es
**Repository Path**: avatarwx/ruoyi-cloud-es
## Basic Information
- **Project Name**: ruoyi-cloud-es
- **Description**: 基于RuoYi-cloud3.5.0 + elasticsearch7的搜索引擎演示项目,使用2个经典案例(百度地图找房+文章内容搜索),演示es常用的功能及代码原生写法和简化写法(easy-es)~支持高亮,分词,Geo等功能
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: http://49.232.18.37:9205
- **GVP Project**: No
## Statistics
- **Stars**: 100
- **Forks**: 46
- **Created**: 2022-11-08
- **Last Updated**: 2025-08-24
## Categories & Tags
**Categories**: erp
**Tags**: ruoyi-cloud-es, ElasticSearch, 百度地图, easy-es, es
## README
## 平台简介
*基于RuoYi-cloud3.5.0 + elasticsearch7的搜索引擎演示项目,使用2个经典案例(百度地图找房+文章内容搜索),演示es常用的功能及代码原生写法和简化写法(easy-es)~
记得右上角点个 star 持续关注更新哟~~
*
## 内置功能
后台页面
* 1. 房源信息:支持后台添加,修改,删除,编辑房源信息
前台页面
* 1. 聚合统计:统计每个区域每个小区房源个数。
* 2. 搜索提示(search-as-you-type):根据输入文字动态弹出提示内容。
* 3. 地图找房:使用百度地图显示房源信息,地图拖拽和缩放变更房源数据。
## 在线体验
* (前台页面) http://49.232.18.37:9205
* (后台管理) http://49.232.18.37:9092
* 测试账号
* 流程管理账号:admin / admin123(可以绘制流程,测试流程请使用测试账号)
## 页面功能展示
## QQ交流群
* QQ交流群:612475165(加群请先star项目 不然验证不通过 备注格式:gitee用户名)
*
* 点击链接加入群聊【ruoyi-cloud-es】:https://jq.qq.com/?_wv=1027&k=lV5NGYNM
## 启动说明
需要对以下模块进行启动 启动顺序随意
* RuoYiAuthApplication
* RuoYiSystemApplication
* RuoYiGatewayApplication
* RuoYiNewsApplication( 租房模块 )
* RuoYiFileApplication( 文件服务 )
### 友情链接
* 感谢若依大佬开源的微服务项目:https://gitee.com/y_project/RuoYi-Cloud
* 感谢蜗牛不会飞大佬开源的找房项目:https://gitee.com/myxw/ElasticSearch_House
* 感谢老汉大佬开源的easy-es:https://gitee.com/dromara/easy-es
### 插件版本
* RuoYi-Cloud 3.5.0
* Nacos 2.0.2
* Node.js 14.0.0
* npm 6.14.4
* elasticsearch 7.14.1
## 环境安装
### 1.1 安装docker
```
yum install -y yum-utils
# 阿里云地址(国内地址,相对更快)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
docker version # 查看Docker版本信息
systemctl status docker # 查看 docker 服务状态
systemctl start docker # 启动 docker 服务:
systemctl stop docker # 停止 docker 服务:
systemctl status docker # 查看 docker 服务状态
systemctl restart docker # 重启 docker 服务
vim /etc/docker/daemon.json
# 添加如下内容,可以自己替换。默认地址是我的创建的
{
"registry-mirrors": ["https://mr63yffu.mirror.aliyuncs.com"]
}
systemctl daemon-reload
systemctl restart docker # 重启 docker 服务
```
### 1.2 安装docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 将可执行权限应用于该二进制文件
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
------
### 1.3 安装es
#### 执行命令
```
mkdir -p /data/docker_data/es-kabana
mkdir -p /data/docker_data/es-kabana/es/config
touch /data/docker_data/es-kabana/docker-compose.yml
touch /data/docker_data/es-kabana/es/config/elasticsearch.yml
vim /data/docker_data/es-kabana/docker-compose.yml
vim /data/docker_data/es-kabana/es/config/elasticsearch.yml
cd /data/docker_data/es-kabana
docker-compose up -d 开启es
docker-compose down 关闭es
```
#### docker-compose.yml内容如下:
version: '3'
# 网桥es -> 方便相互通讯
networks:
es:
services:
elasticsearch:
image: registry.cn-hangzhou.aliyuncs.com/zhengqing/elasticsearch:7.14.1 # 原镜像`elasticsearch:7.14.1`
container_name: elasticsearch # 容器名为'elasticsearch'
restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- "./es/data:/usr/share/elasticsearch/data"
- "./es/logs:/usr/share/elasticsearch/logs"
- "./es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml"
- "./es/plugins/:/usr/share/elasticsearch/plugins"
environment: # 设置环境变量,相当于docker run命令中的-e
TZ: Asia/Shanghai
LANG: en_US.UTF-8
discovery.type: single-node
ES_JAVA_OPTS: "-Xmx512m -Xms512m"
ELASTIC_PASSWORD: "123456" # elastic账号密码
ports:
- "9202:9200"
- "9302:9300"
networks:
- es
kibana:
image: registry.cn-hangzhou.aliyuncs.com/zhengqing/kibana:7.14.1 # 原镜像`kibana:7.14.1`
container_name: kibana
restart: unless-stopped
volumes:
- ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
- ./kibana/logs:/usr/share/kibana/logs
environment:
TZ: Asia/Shanghai # 更改容器时区为 CST(默认为UTC)
LANG: en_US.UTF-8
ports:
- "5601:5601"
depends_on:
- elasticsearch
links:
- elasticsearch
networks:
- es
elasticsearch-head:
image: wallbase/elasticsearch-head:6-alpine
container_name: elasticsearch-head
restart: unless-stopped
environment:
TZ: 'Asia/Shanghai'
ports:
- '9100:9100'
networks:
- es
#### elasticsearch.yml内容如下:
```
cluster.name: "docker-cluster"
network.host: 0.0.0.0
http.port: 9200
# 开启es跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type
# 开启安全控制
#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
```
### 1.4安装中文分词
先去github下载分词包[elasticsearch-analysis-ik-7.14.1.zip](https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.14.1/elasticsearch-analysis-ik-7.14.1.zip)
然后解压到该目录下/data/docker_data/es-kabana/es/plugins/analysis-ik-7.14.1
## 启动说明
## 一.启动前数据准备,创建es索引
### 1.1 创建文章内容索引article
请求方式:PUT (请使用postman进行访问)
请求地址:http://127.0.0.1:9202/article
请求内容:(请使用postman进行访问)
{
"settings": {
"number_of_replicas": 0
},
"mappings": {
"dynamic": false,
"properties": {
"publishTime": {
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
"type": "date"
},
"articleCover": {
"type": "keyword"
},
"articleType": {
"type": "integer"
},
"publishUserId": {
"type": "keyword"
},
"title": {
"analyzer": "ik_smart",
"type": "text"
},
"categoryId": {
"type": "integer"
}
}
}
}
参数说明:
number_of_replicas": 0
正确返回:
```
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "article"
}
```
------
### 1.2 创建地图找房索引xunwu
请求方式:PUT (请使用postman进行访问)
请求地址:http://127.0.0.1:9202/xunwu
请求内容:(请使用postman进行访问)
{
"settings": {
"number_of_replicas": 0
},
"mappings": {
"dynamic": false,
"properties": {
"id": {
"type": "long"
},
"houseId": {
"type": "long"
},
"title": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"price": {
"type": "integer"
},
"area": {
"type": "integer"
},
"createTime": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"lastUpdateTime": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"cityEnName": {
"type": "keyword"
},
"regionEnName": {
"type": "keyword"
},
"direction": {
"type": "integer"
},
"distanceToSubway": {
"type": "integer"
},
"subwayLineName": {
"type": "keyword"
},
"subwayStationName": {
"type": "keyword"
},
"tags": {
"type": "text"
},
"street": {
"type": "keyword"
},
"district": {
"type": "keyword"
},
"description": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"layoutDesc" : {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"traffic": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"roundService": {
"type": "text",
"analyzer": "ik_smart",
"search_analyzer": "ik_smart"
},
"rentWay": {
"type": "integer"
},
"suggest": {
"type": "completion"
},
"location": {
"type": "geo_point"
}
}
}
}
参数说明:
number_of_replicas": 0
正确返回:
```
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "xunwu"
}
```
------
### 1.3 删除索引 (此步不需要执行)
请求方式:DELETE (请使用postman进行访问)
请求地址:http://127.0.0.1:9202/article
正确返回:
```
{
"acknowledged": true
}
```
------
### 1.4 将租房数据从mysql中同步到es(访问该接口即可)
请求方式:GET (请使用postman进行访问)
请求地址:http://127.0.0.1:9205/rent/houseDataToEs
正确返回:
```
{
"code": 200,
"message": "OK",
"data": "success",
"more": false
}
```
------
## 一.百度地图相关
### 1.1 申请百度地图ak
(本地运行可以不申请,项目部署服务器则需要申请)
浏览器访问https://lbsyun.baidu.com/ 点击**控制台** 先进行个人实名认证
认证成功后进入**控制台** 点击 **应用管理 我的应用**
点击**创建应用** 填写以下内容 其他默认
#### 创建浏览器端ak
应用名称:
xunwu-web
应用类型:
```
浏览器端
```
请求校验方式:
```
IP白名单校验
```
Referer白名单:
```
0.0.0.0,127.0.0.1,localhost,192.168.1.83,49.232.18.37
```
#### 创建服务器端ak
应用名称:
xunwu-server
应用类型:
```
服务端
```
请求校验方式:
```
IP白名单校验
```
Referer白名单:
```
0.0.0.0/0,0.0.0.0,127.0.0.1,49.232.18.37
```
### 1.2在代码中替换ak为刚才申请的ak
将下面代码文件39行替换为刚才申请的服务器端ak
https://gitee.com/avatarwx/ruoyi-cloud-es/blob/master/ruoyi-modules/ruoyi-modules-news/src/main/java/com/ruoyi/news/service/house/AddressServiceImpl.java
将下面代码文件90行替换为刚才申请的浏览器端ak
https://gitee.com/avatarwx/ruoyi-cloud-es/blob/master/ruoyi-modules/ruoyi-modules-news/src/main/resources/templates/rent-map.html
### 1.3如果地图加载不出来,请关闭你的代理或者vpn.