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. HDU 3980 (SG 环变成链 之前的先手变成后手)

    题意 两个人在一个由 n 个玻璃珠组成的一个圆环上玩涂色游戏,游戏的规则是: 1.每人一轮,每轮选择一个长度为 m 的连续的.没有涂过色的玻璃珠串涂色 2.不能涂色的那个人输掉游戏 Aekdycoin ...

  2. 【Java】 剑指offer(33) 二叉搜索树的后序遍历序列

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如 ...

  3. 066 linux下时间的修改

    1.关于时间的修改,在linux还是很重要的,在这里只是介绍一个简单的常用的命令,并且时间不会写入到系统. 2.命令 3.如果想把时间写进系统 修改完成之后,输入clock -w 时间将会被写进CMO ...

  4. hdu 1106 去5排序

    题目链接:https://vjudge.net/problem/HDU-1106 题目大意: 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数 ...

  5. 002.Docker安装部署

    一 docker安装-CentOS系统 1.1 docker自动安装脚本 root@docker:~# wget -qO- https://get.docker.com/ | sh 或—— root@ ...

  6. Java初学者的30个常见问题

    本文回答了30个Java入门级初学者的常见问题. 我可以用%除以一个小数吗? a += b 和 a = a + b 的效果有区别吗? 声明一个数组为什么需要花费大量时间?为什么Java库不用随机piv ...

  7. vue 开发环境搭建,超级简单仅需3步。

    1,打开 http://nodejs.cn/download/  下载 nodejs,并安装. 2,成功以后,启动cmd命令行,输入npm install -g cnpm --registry=htt ...

  8. BZOJ 3994: [SDOI2015]约数个数和3994: [SDOI2015]约数个数和 莫比乌斯反演

    https://www.lydsy.com/JudgeOnline/problem.php?id=3994 https://blog.csdn.net/qq_36808030/article/deta ...

  9. 洛谷.1782.旅行商的背包(背包DP 单调队列)

    题目链接(卡常背包) 朴素的多重背包是: \(f[i][j] = \max\{ f[i-1][j-k*v[i]]+k*w[i] \}\),复杂度 \(O(nV*\sum num_i)\) 可以发现求\ ...

  10. Java并发程序设计(七)乐天派:无锁

    无锁 一.概述 无锁是处理并发的一种乐观策略,它会假设对资源的访问是没有冲突的.既然没有冲突自然不需要等待,所以所有的线程都可以在不停顿的状态下执行.那遇到冲突怎么办?接下来请看,无锁绝招“CAS”即 ...