springboot整合搜索框架ElasticSearch(整理一)

1、搜索框架elasticsearch简介

如果不使用搜索框架,那么我们常用的就是 mysql:like,但是大量数据会导致性能问题

常用的搜索框架:
solr:针对企业,GB级别,基于Lucene(apache开源搜索框架)。
elasticsearch:(1)针对数据量特别大,PB,TB级别的数据,也是基于Lucene
(2)纯java开发,springboot使用,本文环境是es5.6.8版本,因为elasticsearch升级4->5版本,改动大,但是5版本后,改动不大

elasticSearch主要特点
1、特点:全文检索,结构化检索,数据统计、分析,接近实时处理,分布式搜索(可部署数百台服务器),处理PB级别的数据,搜索纠错,自动完成
2、使用场景:日志搜索,数据聚合,数据监控,报表统计分析
3、国内外使用者:维基百科,Stack Overflow,GitHub

es官方文档新特性
(1)6.2.x版本基于Lucene 7.x,更快,性能进一步提升,对应的序列化组件,升级到Jackson 2.8
(2)推荐使用5.0版本推出的Java REST/HTTP客户端,依赖少,比Transport使用更方便,在基准测试中,性能并不输于Transport客户端.。
在5.0到6.0版本中,每次有对应的API更新, 文档中也说明,推荐使用这种方式进行开发使用,所有可用节点间的负载均衡。在节点故障和特定响应代码的情况下进行故障转移,失败的连接处罚(失败的节点是否重试取决于失败的连续次数;失败的失败次数越多,客户端在再次尝试同一节点之前等待的时间越长)
(3)不再支持一个索引库里面多个type,6.x版本已经禁止一个index里面多个type,所以一个index索引库只能存在1个type
什么是索引库?什么事type?以mysql类比解释
mysql : database table rocord
es : index type(只能存在一个) document

官方文档:
6.0更新特性: https://www.elastic.co/guide/en/elasticsearch/reference/6.0/release-notes-6.0.0.html#breaking-java-6.0.0
6.1更新特性: https://www.elastic.co/guide/en/elasticsearch/reference/6.1/release-notes-6.1.0.html

2、快熟部署ElastcSearch5.6.8

前提:配置JDK1.8
网盘下载:
链接:https://pan.baidu.com/s/1YYOIz1Kf7vbnIuvm9UK9gw
提取码:ju39
官网下载:https://www.elastic.co/products/elasticsearch
springboot整合搜索框架ElasticSearch(整理一)_第1张图片
linux部署

进入下载的安装包目录:
执行解压命令:tar -zxvf elasticsearch-5.6.8.tar.gz
ls	查看是否解压成功
cd elasticsearch-5.6.8
ls 查看目录文件列表,找到bin目录
java -version 查看java版本
cd bin
ls 查看bin目录
./elasticsearch  回车(启动)

浏览器 127.0.0.1:9200	查看是否启动成功。
127.0.0.1:9200/_cat/health      green表示成功

对外网提供搜索访问
找到config目录下elasticsearch.yml		找到 #network.host:192.168.0.1(绑定当前机器的ip到ip白名单)
	外网访问:network.host:0.0.0.0

springboot整合搜索框架ElasticSearch(整理一)_第2张图片
在这里插入图片描述
将elasticsearch设置为linux系统服务

elasticsearch的bin目录下有一个elasticsearch-service.bat 
进入bin目录下执行:

./elasticsearch &

然后在系统服务中可以看到Elasticsearch已成为系统服务。

windows
springboot整合搜索框架ElasticSearch(整理一)_第3张图片
将elasticsearch设置为windows系统服务

elasticsearch的bin目录下有一个elasticsearch-service.bat 
进入bin目录下执行:

elasticsearch-service.bat install

然后在系统服务中可以看到Elasticsearch已成为系统服务。

springboot整合搜索框架ElasticSearch(整理一)_第4张图片

3、配置es出现相关问题处理(阿里云、腾讯云,亚马逊云安装)

问题一:

Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error=‘Cannot allocate memory’ (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 986513408 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/software/temp/elasticsearch-6.2.2/hs_err_pid1912.log
解决:内存不够,购买阿里云的机器可以动态增加内存
springboot整合搜索框架ElasticSearch(整理一)_第5张图片
springboot整合搜索框架ElasticSearch(整理一)_第6张图片
可以修改为:
-Xms512M
-Xmx512M

问题二:

[root@iZwz95j86y235aroi85ht0Z bin]# ./elasticsearch
[2018-02-22T20:14:04,870][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:125) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:112) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.2.2.jar:6.2.2]
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.2.2.jar:6.2.2]
解决:用非root用户
添加用户:useradd -m 用户名 然后设置密码 passwd 用户名

问题三:

./elasticsearch
Exception in thread “main” java.nio.file.AccessDeniedException: /usr/local/software/temp/elasticsearch-6.2.2/config/jvm.options
解决:权限不够 chmod 777 -R 当前es目录

常见配置问题资料:https://www.jianshu.com/p/c5d6ec0f35e0

你可能感兴趣的:(后端)