spring data系列之Spring data ElasticSearch

这篇具有很好参考价值的文章主要介绍了spring data系列之Spring data ElasticSearch。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring data ElasticSearch简介:

       Elasticsearch是一个实时的分布式搜索和分析引擎。它底层封装了Lucene框架,可以提供分布式多用户的全文搜索服务。

       Spring Data ElasticSearch是SpringData技术对ElasticSearch原生API封装之后的产物,它通过对原生API的封装,使得程序员可以简单的对ElasticSearch进行各种操作。

ElasticSearch环境搭建:

       安装ElasticSearch

  1. 修改进程限制,vi /etc/security/limits.conf添加如下参数

* soft nofile 65536

* hard nofile 131072

* soft nproc 2048

* hard nproc 4096

spring data系列之Spring data ElasticSearch

 

2.     修改系统变量的最大值,vi /etc/sysctl.cnf添加如下参数

        vm.max_map_count=655360

spring data系列之Spring data ElasticSearch

        保存修改后,执行sysctl -p命令

3.     上传文件并解压

        rz   elasticsearch-5.6.8.tar.gz

        tar -zxvf elasticserach-5.6.8.tar.gz

4.     创建用户以及用户组和授权

        创建组    groupadd  es

        创建用户并指定组    useradd -g es es

        授权    chown   -R es:es       elasticsearch-5.6.8

5.     切换es用户,修改配置文件

        su   es

        vi     elasticsearch.yml

spring data系列之Spring data ElasticSearch

 

6.     启动ElasticSearch

 

spring data系列之Spring data ElasticSearch

7.     访问9200端口,出现如下信息,表示搭建成功

spring data系列之Spring data ElasticSearch

 

8.     安装cnpm和grunt-cli插件

spring data系列之Spring data ElasticSearch

9.     cnpm指令建立软链

spring data系列之Spring data ElasticSearch 

10.   修改elasticsearch的配置添加跨域请求允许,即增加以下两行

spring data系列之Spring data ElasticSearch 

 

11.   启动head插件    grunt server &,并通过浏览器请求9100端口

spring data系列之Spring data ElasticSearch

 

12.   安装 IK分词器

        ES默认的中文分词器是将每一个汉字作为一个词,这显然不合适,而IK分词 是一款国人开发的相对简单的中文分词器,它包含大量的中文词,而且支持自定义     分词。

        ik分词器提供的分词规则:

        ik_max_word :会将文本做最细粒度的拆分,比如会将“中华人民共和国人民          大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民共和国、人民、共        和国、大会堂、大会、会堂等词语。

        ik_smart :会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中        华人民共和国、人民大会堂

        两种分词器使用的最佳实践是:索引时用ik_max_word,在搜索时用ik_smart。即:        索引时最大化的将文章内容分词,搜索时更精确的搜索到想要的结果。

        第一步:下载得到ik分词器的安装包,将其解压得到有一个文件夹,并将文件夹重命名为ik。

        第二步 :将elastaicsearch文件夹拷贝到elastaicsearch-5.6.8下的plugins目录下,并重命名为ik。

        第三步 :重新启动elasticsearch即可加载IK分词器。

测试:

spring data系列之Spring data ElasticSearch

ElasticSearch 基础知识

       核心概念

              索引 index

                     一个索引就是一个拥有几分相似特征的文档的集合。索引就类似于关系型数据              库中的库的概念。类型 type

                     一个类型是索引中的一个逻辑上的分类/分区。类型就类似于关系型数据库中              的数据表的概念。

              映射 mapping

                     映射是对类型中的字段的限制。映射就类似于关系型数据库中的数据表结构的              概念。

              文档 document

                     一个文档是一个可被索引的基础信息单元。文档就类似于关系型数据库中的行              的概念。

              ElasticSearch跟关系型数据库中概念的对比:

                     Relational DB -> Databases -> Tables -> Rows -> Columns

                     Elasticsearch -> Indices -> Types -> Documents -> Fields

Spring data ElasticSearch

       创建工程,引入坐标

        <!--elasticsearch-->

        <dependency>

          <groupId>org.elasticsearch</groupId>

          <artifactId>elasticsearch</artifactId>

          <version>5.6.8</version>

        </dependency>

        <dependency>

          <groupId>org.elasticsearch.client</groupId>

          <artifactId>transport</artifactId>

          <version>5.6.8</version>

        </dependency>
<!--spring-data-elasticsearch-->

        <dependency>

          <groupId>org.springframework.data</groupId>

          <artifactId>spring-data-elasticsearch</artifactId>

          <version>3.0.5.RELEASE</version>

        </dependency>

       添加配置文件

spring data系列之Spring data ElasticSearch

 

       创建实体类

spring data系列之Spring data ElasticSearch

 

       创建接口类

spring data系列之Spring data ElasticSearch

       测试 

import com.test.springdataelastic.Article;
import com.test.springdataelastic.ArticleDao;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;
import java.util.Optional;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext-es.xml")
public class EsTest {

   
@Autowired
   
private ElasticsearchTemplate template;

   
@Autowired
   
private ArticleDao articleDao;

   
//通过SpringData ES技术向ElasticSearch数据库存储一条数据
    @Test
   
public void testSave() {
       
//创建索引
        template.createIndex(Article.class);
       
//创建映射
        template.putMapping(Article.class);
       
//创建文档
        Article article = new Article();
        article.setId(
1);
        article.setTitle(
"测试elasticsearch");
        article.setContext(
"20200829测试用");
       
//保存文档
        articleDao.save(article);
    }

   
//修改
    @Test
   
public void testUpdate() {
       
//判断数据库中是否有你指定的id的文档,如果没有,就进行保存,如果有,就进行更新
        Article article = new Article();
        article.setId(
1);
        article.setTitle(
"测试elasticsearch02");
        article.setContext(
"20200829测试用02");
       
articleDao.save(article);
    }

   
//删除
    @Test
   
public void testDelete() {
       
//根据主键删除
        articleDao.deleteById(1);
    }

   
//重新构建数据
    @Test
   
public void makeData() {
       
//创建索引
        template.createIndex(Article.class);
       
//创建映射
        template.putMapping(Article.class);
       
for (int i = 1; i <= 10; i++) {
           
//创建文档
            Article article = new Article();
            article.setId(i);
            article.setTitle(
"20200829测试" + i);
            article.setContext(
"20200829测试,看看行不行" + i);
            article.setHits(
100 + i);
           
//保存文档
            articleDao.save(article);
        }
    }

   
//查询所有
    @Test
   
public void testFindAll() {
        Iterable<Article> all =
articleDao.findAll();
       
for (Article article : all) {
            System.
out.println(article);
        }
    }

   
//主键查询
    @Test
   
public void testFindById() {
        Optional<Article> opt =
articleDao.findById(5);
        System.
out.println(opt.get());
    }

   
//分页查询
    @Test
   
public void testFindAllWithPage() {
       
//设置分页条件
        Pageable pageable = PageRequest.of(1, 3);//page代表的页码,0开始
        Page<Article> page = articleDao.findAll(pageable);
       
for (Article article : page.getContent()) {
            System.
out.println(article);
        }
    }

   
//排序查询
    @Test
   
public void testFindAllWithSort() {
       
//设置排序条件
        Sort sort = Sort.by(Sort.Order.desc("hits"));
        Iterable<Article> all =
articleDao.findAll(sort);
       
for (Article article : all) {
            System.
out.println(article);
        }
    }

   
//分页+排序查询
    @Test
   
public void testFindAllWithPageAndSort() {
       
//设置排序条件
        Sort sort = Sort.by(Sort.Order.desc("hits"));
       
//设置分页条件
        Pageable pageable = PageRequest.of(1, 3, sort);//page代表的页码,0开始
        Page<Article> page = articleDao.findAll(pageable);
       
for (Article article : page.getContent()) {
            System.
out.println(article);
        }
    }

   
//根据标题查询
    @Test
   
public void testFindByTitle() {
        List<Article> articles =
articleDao.findByTitle("测试");
       
for (Article article : articles) {
            System.
out.println(article);
        }
    }


   
//根据标题查询
    @Test
   
public void testFindByTitleOrContext() {
        List<Article>   articles=   
articleDao.findByTitleOrContext("elasticsearch", "测试");
       
for (Article article : articles) {
            System.
out.println(article);
        }
    }

   
//根据标题查询
    @Test
   
public void testFindByTitleOrContextWithPage() {
       
//设置排序条件
        Sort sort = Sort.by(Sort.Order.desc("hits"));
        
//设置分页条件
        Pageable pageable = PageRequest.of(1, 3, sort);//page代表的页码,0开始
        List<Article> articles = articleDao.findByTitleOrContext("测试", "测试", pageable);
       
for (Article article : articles) {
            System.
out.println(article);
        }
    }
}

总结:搭建elasticsearch搜索引擎,通过spring data 整合elasticsearch,让操作检索文档变得简单。文章来源地址https://www.toymoban.com/news/detail-402275.html

到了这里,关于spring data系列之Spring data ElasticSearch的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Data ElasticSearch简介

    Spring Data是⼀个⽤于简化数据库访问,并⽀持云服务的开源框架。其主要⽬标是使得对数据的访问变 得⽅便快捷,并⽀持map-reduce框架和云计算数据服务。 Spring Data可以极⼤的简化JPA的写法,可 以在⼏乎不⽤写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分

    2023年04月19日
    浏览(31)
  • Springboot --- 整合spring-data-jpa和spring-data-elasticsearch

    SpringBoot: 整合Ldap. SpringBoot: 整合Spring Data JPA. SpringBoot: 整合Elasticsearch. SpringBoot: 整合spring-data-jpa和spring-data-elasticsearch. SpringBoot: 整合thymeleaf. SpringBoot: 注入第三方jar包. SpringBoot: 整合Redis. SpringBoot: 整合slf4j打印日志. SpringBoot: 整合定时任务,自动执行方法. SpringBoot: 配置多数据源

    2023年04月25日
    浏览(39)
  • Spring Data Elasticsearch介绍(七)

            Spring Data Elasticsearch是Spring Boot套件中的一个组件,在Spring Boot中连接ES可以使用Spring Data Elasticsearch。         Spring Data Elasticsearch是Spring Data项目的一部分,该项目致力于提供一致的基于Spring的数据查询和存储编程模型。         Spring Data Elasticsearch封装了创

    2024年02月14日
    浏览(31)
  • Spring Data Elasticsearch配置及使用

    以POJO为中心模型用于与Elastichsearch文档交互,并轻松编写存储库样式的数据访问层框架 我们学习的是底层封装了Rest High Level的ElasticsearchRestTemplate模板类型。需要使用Java API Client(Transport),则应用ElasticsearchTemplate模板类型即可。两种类型中的方法API几乎完全一样,学会了一

    2024年02月11日
    浏览(33)
  • Spring Data Elasticsearch 的简单使用

    目录 一、简介 二、配置 三、映射 四、 常用方法 五、操作(重点) 1、对索引表的操作 2、对文档的操作(重点) (1)、添加文档  (2)、删除文档 (3)、查询文档(重点) 查询全部文档 (两种方式) matchQuery根据拆分进行全局搜索 matchPhraseQuery短语搜索--完整搜

    2024年02月12日
    浏览(29)
  • Spring Data Elasticsearch--使用/教程/实例

    原文网址:Spring Data Elasticsearch--使用/教程/实例_IT利刃出鞘的博客-CSDN博客 技术星球 欢迎来到IT技术星球,网站是:learn.skyofit.com(或者百度直接搜:自学精灵)。内容有: Java真实面试题 、 Java设计模式实战 、Shiro项目实战、 Idea和Navicat的“魔法” 教程、 SpringBoot进阶 、架构

    2023年04月09日
    浏览(29)
  • Elasticsearch版本和Spring Data Elasticsearch版本对应关系

    Elasticsearch版本和Spring Data Elasticsearch版本对应关系 官网说明 【官网说明】:https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#preface.versions Elasticsearch历史版本地址 历史版本:【https://www.elastic.co/cn/downloads/past-releases#elasticsearch】

    2024年02月12日
    浏览(24)
  • 【ElasticSearch】spring-data方式操作elasticsearch(一)

    1.添加依赖 2.添加ES配置 3.添加实体类 4.添加repository 准备操作都做完了,开始进行对elasticsearch操作了,新增一些测试模拟数据 结果: 类似SQL: 可以按照多个字段进行排序 public static Sort by(Order… orders) ; 类似SQL: 类似SQL: 结果: 类似SQL: 结果: 若是查询中文,需要添加 key

    2024年02月04日
    浏览(28)
  • spring data elasticsearch:启动项目时自动创建索引

    在springboot整合spring data elasticsearch项目中,当索引数量较多,mapping结构较为复杂时,我们常常希望启动项目时能够自动创建索引及mapping,这样就不用再到各个环境中创建索引了 所以今天咱们就来看看如何自动创建索引 我们已经在实体类中声明了索引数据结构了,只需要识别

    2024年02月05日
    浏览(28)
  • 6.5 Elasticsearch(五)Spring Data Elasticsearch - 增删改查API

    可以访问spring官网查看其API的具体使用方式:https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#reference Spring Data Elasticsearch 是 Elasticsearch 搜索引擎开发的解决方案。它提供了模板对象,用于存储、搜索、排序文档和构建聚合的高级API。 例如, Repository 使开发者能够通

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包