SpringBoot 2.x 整合ElasticSearch的demo

1.配置文件application.yml信息

# Tomcat
server:
tomcat:
uri-encoding: UTF-8
max-threads: 1000
min-spare-threads: 30
port: 8088
context-path: /lion-admin
# DataSource
spring:
data:
elasticsearch:
cluster-name: elasticsearch
cluster-nodes: 127.0.0.1:9300
repositories:
enabled: true

2.实体类User.java

package com.louis.lion.admin.model;

import org.springframework.data.elasticsearch.annotations.Document;

/**
* @ClassName: Search
* @Description: TODO(这里用一句话描述这个类的作用)
* @author lr
* @date 2018年12月5日 下午4:58:50
*
*/
@Document(indexName = "userindex", type = "user")
public class User { /** 编号 */
private Long id;
/** 姓名 */
private String name; /** 年龄 */
private Integer age; /** 描述 */
private String description; /** 创建时间 */
private String createtm; public User(){
} public User(Long id, String name, Integer age, String description, String createtm) {
super();
this.id = id;
this.name = name;
this.age = age;
this.description = description;
this.createtm = createtm;
} /**
* 获取编号
* @return id
*/
public Long getId() {
return id;
} /**
* 设置编号
* @param Long id
*/
public void setId(Long id) {
this.id = id;
} /**
* 获取姓名
* @return name
*/
public String getName() {
return name;
} /**
* 设置姓名
* @param String name
*/
public void setName(String name) {
this.name = name;
} /**
* 获取年龄
* @return age
*/
public Integer getAge() {
return age;
} /**
* 设置年龄
* @param Integer age
*/
public void setAge(Integer age) {
this.age = age;
} /**
* 获取描述
* @return description
*/
public String getDescription() {
return description;
} /**
* 设置描述
* @param String description
*/
public void setDescription(String description) {
this.description = description;
} /**
* 获取创建时间
* @return createtm
*/
public String getCreatetm() {
return createtm;
}
/**
* 设置创建时间
* @param String createtm
*/
public void setCreatetm(String createtm) {
this.createtm = createtm;
} @Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + ", description=" + description + ", createtm="
+ createtm + "]";
} }

3.service类

package com.louis.lion.admin.service;

import java.util.List;

import com.louis.lion.admin.model.User;

/**
* @ClassName: SearchService
* @Description: TODO(这里用一句话描述这个类的作用)
* @author lr
* @date 2018年12月5日 下午5:05:12
*
*/
public interface SearchService{
boolean insert(User entity);
List<User> search(String searchContent);
}

4.serviceImpl实现类

package com.louis.lion.admin.service.impl;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.louis.lion.admin.dao.SearchMapper;
import com.louis.lion.admin.model.User;
import com.louis.lion.admin.service.SearchService; /**
* @ClassName: SearchServiceImpl
* @Description: TODO(这里用一句话描述这个类的作用)
* @author lr
* @date 2018年12月5日 下午5:06:03
*
*/
@Service
public class SearchServiceImpl implements SearchService{ @Autowired
private SearchMapper searchMapper; @Override
public boolean insert(User entity) {
boolean falg=false;
try{
searchMapper.save(entity);
falg=true;
}catch(Exception e){
e.printStackTrace();
}
return falg;
} @Override
public List<User> search(String searchContent){
QueryStringQueryBuilder builder = new QueryStringQueryBuilder(searchContent);
System.out.println("查询的语句:"+builder);
Iterable<User> searchResult = searchMapper.search(builder);
Iterator<User> iterator = searchResult.iterator();
List<User> list=new ArrayList<User>();
while (iterator.hasNext()) {
list.add(iterator.next());
}
return list;
}
}

5.dao类

/**
* @Title: SearchMapper.java
* @Package com.louis.lion.admin.dao
* @Description: TODO(用一句话描述该文件做什么)
* @author lr
* @date 2018年12月5日 下午5:03:17
* @version V1.0.0
*/
package com.louis.lion.admin.dao; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import com.louis.lion.admin.model.User; /**
* @ClassName: SearchMapper
* @Description: TODO(这里用一句话描述这个类的作用)
* @author lr
* @date 2018年12月5日 下午5:03:17
*
*/
public interface SearchMapper extends ElasticsearchRepository<User, Long>{ }

6.SearchController.java

/**
* @Title: SearchController.java
* @Package com.louis.lion.admin.controller
* @Description: TODO(用一句话描述该文件做什么)
* @author lr
* @date 2018年12月5日 下午4:56:18
* @version V1.0.0
*/
package com.louis.lion.admin.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import com.louis.lion.admin.model.User;
import com.louis.lion.admin.service.SearchService; /**
* @ClassName: SearchController
* @Description: TODO(这里用一句话描述这个类的作用)
* @author lr
* @date 2018年12月5日 下午4:56:18
*
*/
@RestController
@RequestMapping(value = "search")
public class SearchController { @Autowired
private SearchService searchService; @PostMapping("/save")
public boolean createUser(@RequestBody User user) {
return searchService.insert(user);
} // @GetMapping(value = "/{name}")
// public Object search(@PathVariable("name") String name) {
// return this.searchService.search(name);
// }
@GetMapping("/searchContent")
public List<User> search(@RequestParam(value = "searchContent") String searchContent) {
return searchService.search(searchContent);
}
}

windows 上安装Elasticsearch服务

文件准备

下载地址:

https://www.elastic.co/downloads

选择ElasticSearch相关版本, 然后选择后缀名为ZIP文件进行下载,下载之后进行解压

修改解压后的配置文件,进入到elasticsearch-6.5.1\config 下修改elasticsearch.yml

# ======================== Elasticsearch Configuration =========================
#
# NOTE: Elasticsearch comes with reasonable defaults for most settings.
# Before you set out to tweak and tune the configuration, make sure you
# understand what are you trying to accomplish and the consequences.
#
# The primary way of configuring a node is via this file. This template lists
# the most important settings you may want to configure for a production cluster.
#
# Please consult the documentation for further information on configuration options:
# https://www.elastic.co/guide/en/elasticsearch/reference/index.html
#
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: elasticsearch
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-1
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
#path.data: /path/to/data
#
# Path to log files:
#
#path.logs: /path/to/logs
#
# ----------------------------------- Memory -----------------------------------
#
# Lock the memory on startup:
#
#bootstrap.memory_lock: true
#
# Make sure that the heap size is set to about half the memory available
# on the system and that the owner of the process is allowed to use this
# limit.
#
# Elasticsearch performs poorly when the system is swapping the memory.
#
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 9200
#
# For more information, consult the network module documentation.
#
# --------------------------------- Discovery ----------------------------------
#
# Pass an initial list of hosts to perform discovery when new node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.zen.ping.unicast.hosts: ["host1", "host2"]
#
# Prevent the "split brain" by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):
#
#discovery.zen.minimum_master_nodes:
#
# For more information, consult the zen discovery module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true

启动Elasticsearch

进入bin目录下,运行 elasticsearch.bat

然后在浏览上输入: localhost:9200

成功显示一下界面表示成功!

{
"name" : "node-1",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "Qt1HMowsQDqKUgBMVtwLAg",
"version" : {
"number" : "6.5.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "8c58350",
"build_date" : "2018-11-16T02:22:42.182257Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

web管理界面head 安装

Windows10搭建ElasticSearch 并配置head

中文分词使用

中文分词下载地址

然后根据对应的版本下载,我下载的是V6.5.1,下载完成后,解压到elasticsearch-6.5.1plugins目录下。把解压后的文件放到IK【自己新建】文件夹中,然后重新启动就可以了

API调用效果如下,首先需要向分词器中添加数据

SpringBoot 2.x 整合ElasticSearch的demo的更多相关文章

  1. SpringBoot检索篇Ⅳ --- 整合ElasticSearch

    知识储备:  关于ElasticSearch的基本使用我已经在上一篇文章介绍过了(传送门),本篇文章主要讲述的是SpringBoot与ElasticSearch的整合使用. SpringBoot与El ...

  2. SpringBoot整合elasticsearch

    在这一篇文章开始之前,你需要先安装一个ElasticSearch,如果你是mac或者linux可以参考https://www.jianshu.com/p/e47b451375ea,如果是windows ...

  3. Springboot整合elasticsearch以及接口开发

    Springboot整合elasticsearch以及接口开发 搭建elasticsearch集群 搭建过程略(我这里用的是elasticsearch5.5.2版本) 写入测试数据 新建索引book( ...

  4. SpringBoot进阶教程(七十三)整合elasticsearch

    Elasticsearch 是一个分布式.高扩展.高实时的搜索与数据分析引擎.它能很方便的使大量数据具有搜索.分析和探索的能力.充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更 ...

  5. SpringBoot整合ElasticSearch实现多版本的兼容

    前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...

  6. ElasticSearch(2)---SpringBoot整合ElasticSearch

    SpringBoot整合ElasticSearch 一.基于spring-boot-starter-data-elasticsearch整合 开发环境:springboot版本:2.0.1,elast ...

  7. java框架之SpringBoot(13)-检索及整合Elasticsearch

    ElasticSearch介绍 简介 我们的应用经常需要使用检索功能,开源的 Elasticsearch 是目前全文搜索引擎的首选.它可以快速的存储.搜索和分析海量数据.SpringBoot 通过整合 ...

  8. 【SpringBoot】搜索框架ElasticSearch介绍和整合SpringBoot

    ========================12章 搜索框架ElasticSearch介绍和整合SpringBoot ============================= 加入小D课堂技术交 ...

  9. springboot整合elasticsearch入门例子

    springboot整合elasticsearch入门例子 https://blog.csdn.net/tianyaleixiaowu/article/details/72833940 Elastic ...

随机推荐

  1. python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))

    昨日内容回顾 1. 三个类 ChangeList,封装列表页面需要的所有数据. StarkConfig,生成URL和视图对应关系 + 默认配置 AdminSite,用于保存 数据库类 和 处理该类的对 ...

  2. MyEclipse10中启动出现OutOfMemoryError: PermGen space如何解决

    一篇关于技术的文档,分享给大家.在MyEclipse中启动程序运行,报错java.lang.OutOfMemoryError: PermGen space应该怎么办?这是eclipse 内存不够的原因 ...

  3. java List.subList方法中的超级大陷阱

    ArrayList 中 subList 的基本用法: subList(fromIndex:int,toIndex:int):List<E> 返回从fromIndex到toindex-1 的 ...

  4. scanf的一个问题(暂未解决)

    如下代码,没有按照预想的那样运行: int a; char b; printf("input a integer\n"); scanf("%d", &a ...

  5. ubuntu16.04LTS服务器,python2.7升级到3.6,且同时升级pip

    ubuntu这个服务器,默认是带了python2.7和python3.5版本的. 如果想升级到python3.6,怎么办? 我综合了网上的几个帖子,在几台服务器上测试了一下, 没什么大问题,作个记录. ...

  6. C# 关键字const与readonly的区别

    尽管你写了很多年的C#的代码,但是可能当别人问到你const与readonly的区别时候,还是会小小的愣一会吧~ 笔者也是在看欧立奇版的<.Net 程序员面试宝典>的时候,才发现自己长久以 ...

  7. python学习之基本数据类型

    python的基本数据类型有数字.字符串.列表.字典.元祖.布尔值 一.数字 1.1.字符转换为数字 实例: a=" b=int(a) print(b+) 运行结果: 可以用type查看数据 ...

  8. Docker 记一次容器内部修改宿主机挂载目录用户权限后宿主机目录变化

    一.需求: 因公司需求,需制作mysql5.7.22 docker基础镜像,每个项目以此镜像启动一个数据库容器,并且每个项目挂载一个宿主机目录到镜像中数据存储下面用于数据持久化保存以便后期迁移至阿里云 ...

  9. hadoop分布式集群完全安装(非HA)

    一.各节点基础环境配置(最好每台都配置) 先输入su获取root权限 1修改主机名 输入vim /etc/sysconfig/network 改成: NETWORKING=yes HOSTNAME=m ...

  10. PLSQL Developer

    1 intall oracle11gex start OracleXEClrAgent start  OracleXETNSListener 2 install C:\Dev Tool\instant ...