[问题记录]springboot集成spring data elasticsearch(win)
1.查看springboot与elasticsearch版本对应关系
测试环境
jdk:1.8
springboot:2.2.13.RELEASE
spring-boot-starter-data-elasticsearch:2.2.13.RELEASE
spring-data-elasticsearch:3.2.12.RELEASE (spring-boot-starter-data-elasticsearch依赖版本)
elasticsearch:6.8.6
4.配置elasticsearch
4.1 进入elasticsearch安装目录下的config目录,修改elasticsearch.yml文件,在文件的末尾加入以下代码
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
4.2 去掉注释/修改
cluster.name: my-application
node.name: node-1
path.data:配置data目录(一般在elasticsearch安装目录下创建data目录)
path.logs:配置logs目录(如果elasticsearch安装目录下没有logs目录,创建logs目录)
network.host: 0.0.0.0 (修改)
http.port: 9200
5.查看elasticsearch运行情况
5.1 进入elasticsearch-6.8.6\bin 下运行 elasticsearch.bat
5.2
9300:Java程序访问的端口
9200:浏览器、postman访问的端口
5.3 访问 http://127.0.0.1:9200
5.4 显示如下说明运行成功
6.配置elasticsearch服务(选配)
6.1 进入ElasticSearch 的bin 目录 执行 elasticsearch-service.bat install 这时已经是windows服务了
6.2:然后执行 elasticsearch-service.bat manager 然后把 use default 勾上 或者把 JAVA Virtual Machine 设置成绝对路径
6.3 查看windows服务: Elasticsearch 6.8.6 (elasticsearch-service-x64)
6.4 这样以后启动 更方便
7.1解压到指定文件夹下,进入该文件夹 elasticsearch-head-master,修改elasticsearch-head-master\Gruntfile.js 在对应的位置加上hostname:’*’、
server: {
options: {
hostname: '*',
port: 9100,
base: '.',
keepalive: true
}
}
7.2 es5以上版本安装head需要安装node和grunt
8.安装node
8.1 配置node环境变量
8.2 node -v 查看版本,查看是否安装成功
9.grunt
执行 npm install -g grunt-cli 安装grunt ,安装完成后执行grunt -version查看是否安装成功,会显示安装的版本号
10.运行head
10.1 cmd进入elasticsearch-head-master安装目录下执行npm install 安装。
10.2 安装完成后执行grunt server 或者npm run start 运行head插件,如果运行不成功建议重新安装
grunt。
10.3 访问 http://127.0.0.1:9100
11.安装Ik分词器
11.1 ik分词器与es的版本要一致
11.2 下载 elasticsearch-analysis-ik-xxx 压缩包
11.3 重命名解压包为 ik
11.4 将ik包 复制到安装目录elasticsearch-6.8.6\plugins 下
11.5 进入elasticsearch-6.8.6\bin下 执行 elasticsearch.bat 启动服务 查看加载的插件
11.6 cmd显示 loaded plugin [analysis-ik] 即ik分词器安装成功
12.springboot集成spring data elasticsearch
12.1 配置pom
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
12.2 配置 yaml
spring:
data:
elasticsearch:
cluster-name: my-application
cluster-nodes: 127.0.0.1:9300
13.基本测试
13.1 创建pojo对象
import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
import org.springframework.stereotype.Component;
/**
* indexName索引名称全部小写,type类型
*/
@Document(indexName = "houseindex",type = "house")
@Component
@Data
public class HouseIndexTemplate {
@Id
private Long id;
// 使用分词器
@Field(type = FieldType.Text, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word")
private String title;
@Field(type = FieldType.Keyword)
private String name;
@Field(type = FieldType.Integer)
private int price;
}
13.2接口
public interface HouseRepository extends ElasticsearchRepository<HouseIndexTemplate, Long> {
}
13.3 测试
@Test
public void selectUser(){
HouseIndexTemplate template = new HouseIndexTemplate();
template.setId(1L);
template.setName("Tom");
template.setTitle("tom");
houseRepository.save(template);
}
13.4 http://localhost:9100/ 查看创建的数据