SpringBoot整合elasticsearch(三)
Docker安装elasticsearch
启动注意2点,1是内存,2是线程数(此处进行简单安装,后面会详细补充es文档)
[root@topcheer ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
elasticsearch latest 874179f19603 12 days ago 771 MB
springbootdemo4docker latest cd13bc7f56a0 2 weeks ago 678 MB
docker.io/tomcat latest ee48881b3e82 4 weeks ago 506 MB
docker.io/rabbitmq latest a00bc560660a 4 weeks ago 147 MB
docker.io/centos latest 67fa590cfc1c 7 weeks ago 202 MB
docker.io/redis latest f7302e4ab3a8 8 weeks ago 98.2 MB
docker.io/rabbitmq 3.7.16-management 3f92e6354d11 2 months ago 177 MB
docker.io/elasticsearch 6.8.0 d0b291d7093b 4 months ago 895 MB
docker.io/hello-world latest fce289e99eb9 9 months ago 1.84 kB
docker.io/java 8 d23bdf5b1b1b 2 years ago 643 MB
[root@topcheer ~]# docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name myES d0b291d7093b
5c4e5ffac1630f57260f739d200050535daf3ab10b1256441400a04fef70434b
[root@topcheer ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c4e5ffac163 d0b291d7093b "/usr/local/bin/do..." 6 seconds ago Up 5 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp myES
[root@topcheer ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c4e5ffac163 d0b291d7093b "/usr/local/bin/do..." About a minute ago Exited (78) 34 seconds ago myES
[root@topcheer ~]# docker logs -tf --tail 200 5c4e5ffac163
2019-10-11T15:33:21.335717000Z OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
发现ES容器停止了
2019-10-11T15:34:04.379276000Z [2019-10-11T15:34:04,372][INFO ][o.e.t.TransportService ] [om43m7F] publish_address {172.17.0.4:9300}, bound_addresses {[::]:9300}
2019-10-11T15:34:04.432432000Z [2019-10-11T15:34:04,393][INFO ][o.e.b.BootstrapChecks ] [om43m7F] bound or publishing to a non-loopback address, enforcing bootstrap checks
2019-10-11T15:34:04.441501000Z ERROR: [1] bootstrap checks failed
2019-10-11T15:34:04.441844000Z [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
2019-10-11T15:34:04.497725000Z [2019-10-11T15:34:04,454][INFO ][o.e.n.Node ] [om43m7F] stopping ...
2019-10-11T15:34:04.559075000Z [2019-10-11T15:34:04,557][INFO ][o.e.n.Node ] [om43m7F] stopped
2019-10-11T15:34:04.559461000Z [2019-10-11T15:34:04,557][INFO ][o.e.n.Node ] [om43m7F] closing ...
2019-10-11T15:34:04.580693000Z [2019-10-11T15:34:04,577][INFO ][o.e.n.Node ] [om43m7F] closed
2019-10-11T15:34:04.584525000Z [2019-10-11T15:34:04,581][INFO ][o.e.x.m.p.NativeController] [om43m7F] Native controller process has stopped - no new native processes can be started
解决:
在宿主机执行:
sysctl -w vm.max_map_count=262144
原因:
vm.max_map_count参数,是允许一个进程在VMAs拥有最大数量(VMA:虚拟内存地址, 一个连续的虚拟地址空间),当进程占用内存超过时, 直接OOM。
elasticsearch占用内存较高。官方要求max_map_count需要配置到最小262144。
重新启动:
http://192.168.180.113:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1570808429 15:40:29 docker-cluster green 1 1 0 0 0 0 0 0 - 100.0%

Springboot整合
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
配置文件
spring
data:
elasticsearch:
cluster-nodes: 192.168.180.113:9300
cluster-name: docker-cluster
启动类(采用第二种)
/**
* SpringBoot默认支持两种技术来和ES交互;
* 1、Jest(默认不生效)
* 需要导入jest的工具包(io.searchbox.client.JestClient)
* 2、SpringData ElasticSearch【ES版本有可能不合适】
* 版本适配说明:https://github.com/spring-projects/spring-data-elasticsearch
* 如果版本不适配:2.4.6
* 1)、升级SpringBoot版本
* 2)、安装对应版本的ES
*
* 1)、Client 节点信息clusterNodes;clusterName
* 2)、ElasticsearchTemplate 操作es
* 3)、编写一个 ElasticsearchRepository 的子接口来操作ES;
* 两种用法:https://github.com/spring-projects/spring-data-elasticsearch
* 1)、编写一个 ElasticsearchRepository
*/
@SpringBootApplication
public class Springboot03ElasticApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot03ElasticApplication.class, args);
}
}
发现启动项目报错:
nested exception is java.lang.IllegalStateException: availableProcessors is already set to [4], rejecting [4]
我网上查询了一下,有人是是因为整合了Redis的原因。但是我把Redis相关的配置去掉后,问题还是没有解决,最后有人说是因为netty冲突的问题。 也有人给出了解决方式就是在项目初始化钱设置一下一个属性。在初始化之前加上System.setProperty("es.set.netty.runtime.available.processors", "false");
@Configuration
public class ElasticSearchConfig {
@PostConstruct
void init() {
System.setProperty("es.set.netty.runtime.available.processors", "false");
}
}
Bo类
@Document(indexName = "topcheer",type = "book" )
@Slf4j
@Data
@Builder
public class Book implements Serializable {
private Integer id;
private String name;
private String author;
public Book(String name, String author) {
this.name = name;
this.author = author;
}
public Book(Integer id, String name, String author) {
this.id = id;
this.name = name;
this.author = author;
}
public Book() {
}
}
Repository类
public interface BookRepository extends ElasticsearchRepository<Book,Integer> {
//参照
// https://docs.spring.io/spring-data/elasticsearch/docs/3.0.6.RELEASE/reference/html/
public List<Book> findByNameLike(String name);
}
测试类:
@Autowired
BookRepository bookRepository;
@Test
public void test02() {
Book book = new Book();
book.setId(1);
book.setName("西游记");
book.setAuthor("吴承恩");
bookRepository.index(book);
for (Book book1 : bookRepository.findByNameLike("游")) {
System.out.println(book1);
};
}
结果:
2019-10-12 00:27:03.827 INFO --- [ main] Oss6ApplicationTests : Started Oss6ApplicationTests in 17.532 seconds (JVM running for 19.428)
2019-10-12 00:27:03.829 DEBUG --- [ main] ls.restart.Restarter : Creating new Restarter for thread Thread[main,5,main]
Book(id=1, name=西游记, author=吴承恩)
2019-10-12 00:27:04.851 DEBUG --- [ Thread-3] ebApplicationContext : Closing org.springframework.web.context.support.GenericWebApplicationContext@20f5281c, started on Sat Oct 12 00:26:47 CST 2019
2019-10-12 00:27:04.859 INFO --- [ Thread-3] ageListenerContainer : Waiting for workers to finish.
http://192.168.180.113:9200/topcheer/book/_search
{"took":7,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"topcheer","_type":"book","_id":"1","_score":1.0,"_source":{"id":1,"name":"西游记","author":"吴承恩"}}]}}
SpringBoot整合elasticsearch(三)的更多相关文章
- SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121 ...
- Springboot整合ElasticSearch进行简单的测试及用Kibana进行查看
一.前言 搜索引擎还是在电商项目.百度.还有技术博客中广泛应用,使用最多的还是ElasticSearch,Solr在大数据量下检索性能不如ElasticSearch.今天和大家一起搭建一下,小编是看完 ...
- SpringBoot整合ElasticSearch实现多版本的兼容
前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...
- ElasticSearch(2)---SpringBoot整合ElasticSearch
SpringBoot整合ElasticSearch 一.基于spring-boot-starter-data-elasticsearch整合 开发环境:springboot版本:2.0.1,elast ...
- springboot整合elasticsearch入门例子
springboot整合elasticsearch入门例子 https://blog.csdn.net/tianyaleixiaowu/article/details/72833940 Elastic ...
- Springboot整合elasticsearch以及接口开发
Springboot整合elasticsearch以及接口开发 搭建elasticsearch集群 搭建过程略(我这里用的是elasticsearch5.5.2版本) 写入测试数据 新建索引book( ...
- Springboot整合Elasticsearch报错availableProcessors is already set to [4], rejecting [4]
Springboot整合Elasticsearch报错 今天使用SpringBoot整合Elasticsearch时候,相关的配置完成后,启动项目就报错了. nested exception is j ...
- 😊SpringBoot 整合 Elasticsearch (超详细).md
SpringBoot 整合 Elasticsearch (超详细) 注意: 1.环境搭建 安装es Elasticsearch 6.4.3 下载链接 为了方便,环境使用Windows 配置 解压后配置 ...
- SpringBoot整合elasticsearch
在这一篇文章开始之前,你需要先安装一个ElasticSearch,如果你是mac或者linux可以参考https://www.jianshu.com/p/e47b451375ea,如果是windows ...
随机推荐
- 新手学习FFmpeg - 通过API实现可控的Filter调用链
虽然通过声明[x][y]avfilter=a=x:b=y;avfilter=xxx的方式可以创建一个可用的Filter调用链,并且在绝大多数场合下这种方式都是靠谱和实用的. 但如果想精细化的管理AVF ...
- spring后台重定向方式
1.直接返回值中加重定向:"redirect:要访问的网址"; public String updateOrAddProject() { return "redirect ...
- java通过代理创建Conncection对象与自定义JDBC连接池
最近学习了一下代理发现,代理其实一个蛮有用的,主要是用在动态的实现接口中的某一个方法而不去继承这个接口所用的一种技巧,首先是自定义的一个连接池 代码如下 import java.lang.reflec ...
- 前端 NPM常用命令行
1. 登陆npm npm login 2. 将项目发布至npm npm publish 3. 查看已有源; 其中前面带星号的为当前使用的npm源 nrm ls 4. 切换源 nrm use 或 如: ...
- 【php中的curl】php中curl的详细解说
本文我来给大家详细介绍下cURL的简单的使用方法,下文我将会给大家详细介绍cURL的高级应用, cURL可以使用URL的语法模拟浏览器来传输数据, FTP, FTPS, HTTP, HTTPS, GO ...
- B/S 端构建的基于 WebGL 3D 可视化档案馆管理系统
前言 档案管理系统是通过建立统一的标准以规范整个文件管理,包括规范各业务系统的文件管理的完整的档案资源信息共享服务平台,主要实现档案流水化采集功能.为企事业单位的档案现代化管理,提供完整的解决方案,档 ...
- 小游戏:200行python代码手写2048
#-*- coding: utf-8 -*- import curses from random import randrange, choice from collections import de ...
- Go routine 编排框架:oklog/run 包
目录 Go routine 编排框架:oklog/run 包 问题引入 oklog/run 包介绍 使用例子 参考资料 Go routine 编排框架:oklog/run 包 问题引入 oklog/r ...
- html隐写术,使用摩尔兹电码/莫尔兹电码存储信息 水波纹样式 Morse code
html水波纹样式,源码直接下载,代码有注释教程,小白可以看懂. 动画啥的都做好了,效果我觉得还不错 网上文章看到xbox 工程师使用隐写术,在界面的右下角放上了含有用户激活码的水波纹样式,一般人还真 ...
- RF读取excel
pip install robotframework-ExcelLibrary (安装ExcelLibrary库) 关键字: Open Excel 打开excel Get Column Count 获 ...