SpringBoot整合Elasticsearch(最新最全,高效安装到使用)



> 
> 重启ES服务
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/7a8ba321cd6f40a9ac182f69a475ec2d.png#pic_center)


### 6.安装kibana



> 
> 用途:便于通过rest api调试ES。
> 
> 
> 


[kibana官方7.12.0下载地址]( )  
 [kibana中文社区下载地址]( )



> 
> 1. 解压
> 2. 修改 **kibana-7.12.0-windows-x86\_64/config/kibana.yml** 32行
> 3. 改为elasticsearch.hosts: [“http://127.0.0.1:9200”]
> 4. 保存之后,运行bin/kibana.bat
> 5. 浏览器中访问kibana首页[首页链接]( )
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/f59ca6a9d809404aa6feefc587a72e20.png#pic_center)



> 
> 直接访问开发工具:[开发工具]( )
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/22baa14e9d38441fa5419d12e04dcf6b.png#pic_center)



> 
> 如果想使用ip访问kibana,需要修改 **kibana-7.12.0-windows-x86\_64/config/kibana.yml** 7行  
>  改为 server.host: “0.0.0.0”  
>  如果想使用kibana汉化 需要修改 **kibana-7.12.0-windows-x86\_64/config/kibana.yml** 最后一行  
>  i18n.locale: “zh-CN”
> 
> 
> 


### 7.安装ik分词器



> 
> **注意:下载的ik分词器版本号要和安装的elasticsearch版本一致**
> 
> 
> 



> 
> 把下载的ik分词器解压至Elasticsearch的安装目录/plugins/ik内。
> 
> 
> 


![在这里插入图片描述](https://img-blog.csdnimg.cn/fa3c1644d6804af889fb608d9288c85f.png#pic_center)



> 
> 1. 测试ik分词器
> 2. 重启elasticsearch
> 3. 重启kibana
> 4. 进入kibana的开发工具中执行命令测试 [开发工具]( )
> 5. 执行命令: GET \_analyze{ “analyzer”: “ik\_max\_word”, “text”: “折上折满减”}
> 6. 执行结果如下  
>  ![在这里插入图片描述](https://img-blog.csdnimg.cn/0530fe16f5e34521b447782d21942900.png#pic_center)
> 
> 
> 


## 二、整合SpringBoot和Elasticearch


### 1.pom.xml



org.springframework.boot spring-boot-starter-parent 2.5.15 org.elasticsearch elasticsearch 7.12.0 org.springframework.boot spring-boot-starter-data-elasticsearch

### 2.application.yml



spring:
elasticsearch:
rest:
uris: 192.168.1.36:9200
connection-timeout: 1s
read-timeout: 30s


### 3.ElasticSearch(实体类)



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;

//@Document 文档对象 (索引信息、文档类型 )
@Document(indexName=“blog3”)
@Data
public class ElasticSearch {

//@Id 文档主键 唯一标识
@Id
//@Field 每个文档的字段配置(类型、是否分词、是否存储、分词器 )
@Field(store=true, index = false,type = FieldType.Integer)
private Integer id;

@Field(index=true,analyzer="ik\_smart",store=true,searchAnalyzer="ik\_smart",type = FieldType.Text)
private String title;

@Field(index=true,analyzer="ik\_smart",store=true,searchAnalyzer="ik\_smart",type = FieldType.Text)
private String content;

@Field(index=true,store=true,type = FieldType.Double)
private Double price;

}


### 4.ElasticSearchRepository



import com.economics.project.es.domain.ElasticSearch;
import org.springframework.data.elasticsearch.annotations.Highlight;
import org.springframework.data.elasticsearch.annotations.HighlightField;
import org.springframework.data.elasticsearch.annotations.HighlightParameters;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface ElasticSearchRepository extends ElasticsearchRepository<ElasticSearch, Integer> {

/\*\*

* 查询内容标题查询
* @param title 标题
* @param content 内容
* @return 返回关键字高亮的结果集
*/
@Highlight(
fields = {@HighlightField(name = “title”), @HighlightField(name = “content”)},
parameters = @HighlightParameters(preTags = {“”}, postTags = {“”}, numberOfFragments = 0)
)
List<SearchHit> findByTitleOrContent(String title, String content);

}


### 5.ElasticSearchService



import com.economics.project.es.domain.ElasticSearch;
import org.springframework.data.elasticsearch.core.SearchHit;
import java.util.List;

public interface ElasticSearchService {

//保存和修改
void save(ElasticSearch article);
//查询id
ElasticSearch findById(Integer id);
//删除指定ID数据
void   deleteById(Integer id);

long count();

boolean existsById(Integer id);

List<SearchHit<ElasticSearch>> findByTitleOrContent(String title, String content);

}


### 6.ElasticSearchServiceImpl



import com.economics.project.es.domain.ElasticSearch;
import com.economics.project.es.service.ElasticSearchService;
import com.economics.project.es.service.ElasticSearchRepository;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;

@Service
public class ElasticSearchServiceImpl implements ElasticSearchService {

@Resource
private ElasticSearchRepository ElasticSearchRepository;


@Override
public void save(ElasticSearch ElasticSearch) {
    ElasticSearchRepository.save(ElasticSearch);
}

@Override
public ElasticSearch findById(Integer id) {
    return ElasticSearchRepository.findById(id).orElse(new ElasticSearch());
}

@Override
public void deleteById(Integer id) {
    ElasticSearchRepository.deleteById(id);
}

@Override
public long count() {
    return ElasticSearchRepository.count();
}

@Override
public boolean existsById(Integer id) {
    return ElasticSearchRepository.existsById(id);
}

@Override
public List<SearchHit<ElasticSearch>> findByTitleOrContent(String title, String content) {
    return ElasticSearchRepository.findByTitleOrContent(title,content);
}

}


### 7.EsTest



import com.economics.EconomicsApplication;
import com.economics.project.es.domain.ElasticSearch;
import com.economics.project.es.service.ElasticSearchService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.test.context.junit4.SpringRunner;

import javax.annotation.Resource;
import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = EconomicsApplication.class)
public class EsTest {

@Resource
private ElasticSearchService elasticSearchService;

@Resource
private ElasticsearchRestTemplate elasticsearchRestTemplate;
/\*\*创建索引和映射\*/
@Test
public void createIndex(){

// elasticsearchTemplate.createIndex(ElasticSearch.class);
// elasticsearchTemplate.putMapping(ElasticSearch.class);
}

/\*\*添加文档或者修改文档(以id为准)\*/
@Test
public void saveElasticSearch(){
    ElasticSearch elasticSearch = new ElasticSearch();
    elasticSearch.setId(1);
    elasticSearch.setTitle("SpringData ElasticSearch");
    elasticSearch.setContent("Spring Data ElasticSearch 基于 spring data API 简化 elasticSearch操作,将原始操作elasticSearch的客户端API 进行封装 \n" +
            " Spring Data为Elasticsearch Elasticsearch项目提供集成搜索引擎");
    elasticSearchService.save(elasticSearch);
}
@Test
public void findById(){
    ElasticSearch byId = elasticSearchService.findById(1);
    System.out.println(byId);
}
@Test
public void deleteById(){
    elasticSearchService.deleteById(100);

}
@Test
public void count(){
    long count = elasticSearchService.count();
    System.out.println(count);
}
@Test
public void existsById(){
    boolean b = elasticSearchService.existsById(102);

    System.out.println(b);
}
@Test
public void findByTitleOrContent(){
    List<SearchHit<ElasticSearch>> byTitleOrContent = elasticSearchService.findByTitleOrContent("xxxxxxSpringData","elasticSearch");
    for (SearchHit<ElasticSearch> elasticSearchService : byTitleOrContent) {
        List<String> title = elasticSearchService.getHighlightField("title");
        System.out.println(title);
        List<String> content = elasticSearchService.getHighlightField("content");
        System.out.println(content);

    }
}

}


### 8.自定义查询方式




| 关键字 | 解释 | 方法 |
| --- | --- | --- |
| and | 根据Field1和Field2获得数据 | findByTitleAndContent(String title,String content); |
| or | 根据Field1或Field2获得数据 | findByTitleOrContent(String title,String content); |
| is | 根据Field获得数据 | findByTitle(String title); |
| not | 根据Field获得相反数据 | findByTitleNot(String title) |
| between | 获得指定范围的数据 | findByPriceBetween(double price1, double price2); |
| lessThanEqual | 获得小于等于指定值的数据 | findByPriceLessThan(double price); |
| GreaterThanEqual | 获得大于等于指定值的数据 | findByPriceGreaterThan(double price); |
| Before |  | findByPriceBefore |
| After |  | findByPriceAfter |
| Like | 比较相识的数据 | findByNameLike |
| StartingWith | 以xx开头的 数据 | findByNameStartingWith(String Name); |


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数大数据工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/a593743bb3b06c42a73b35c81fdc6e46.png)
![img](https://img-blog.csdnimg.cn/img_convert/99c4fd48f1473d1a8348aa26126f5ccb.png)
![img](https://img-blog.csdnimg.cn/img_convert/72d0b8e4a98b44177d3289bfd8e6a012.png)
![img](https://img-blog.csdnimg.cn/img_convert/6f417038f4881ea103076fc1ea8ba21e.png)
![img](https://img-blog.csdnimg.cn/img_convert/5749af625c82780741b0b7faa6d9d20b.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
![img](https://img-blog.csdnimg.cn/img_convert/29670346b8dab42281ea7402bbcd401d.png)

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

img-edO0xy7w-1712990079666)]
[外链图片转存中...(img-TNZ9AE4O-1712990079666)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上大数据开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注大数据获取)**
[外链图片转存中...(img-CPxtjHd6-1712990079667)]

**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
整合Spring BootElasticsearch可以帮助我们构建高效、可扩展的搜索引擎和数据分析应用程序。下面是整合Spring BootElasticsearch最新方法: 1. 添加Elasticsearch依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> ``` 2. 配置Elasticsearch连接 在application.properties文件中添加以下配置: ``` spring.data.elasticsearch.cluster-name=elasticsearch spring.data.elasticsearch.cluster-nodes=localhost:9300 ``` 3. 创建Elasticsearch Repository 创建一个Elasticsearch Repository类来访问Elasticsearch数据。该类应该扩展ElasticsearchRepository接口,并指定实体类型和主键类型。例如: ``` public interface EmployeeRepository extends ElasticsearchRepository<Employee, Long> { } ``` 4. 创建实体类 创建一个Java类来表示Elasticsearch文档。该类应该使用@Document注解,并指定索引名称和类型名称。例如: ``` @Document(indexName = "employee_index", type = "employee") public class Employee { @Id private Long id; private String name; private String department; // ... } ``` 5. 使用Elasticsearch Repository 在应用程序中使用Elasticsearch Repository来访问Elasticsearch数据。例如: ``` @Autowired private EmployeeRepository employeeRepository; // 查询所有员工 Iterable<Employee> employees = employeeRepository.findAll(); // 根据部门名称查询员工 Iterable<Employee> employees = employeeRepository.findByDepartment("IT"); ``` 以上就是整合Spring BootElasticsearch最新方法,祝你使用愉快!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值