SpringBoot日记——ElasticSearch全文检索
看到标题的那一串英文,对于新手来说一定比较陌生,而说起检索,应该都知道吧。
这个ElasticSearch目前我们的首选,他主要有可以提供快速的存储、搜索、分析海量数据的作用。他是一个分布式搜索服务,提供了Restful API,底层基于Lucene(一个开源的搜索引擎工具包),使用shard的分片方式保证数据安全,且有自动resharding功能。我们知道的github、维基百科等这类网站,都是采用这个服务的。
elasticsearch的安装
这里在使用前还要说明一点,很重要的:elasticsearch默认占用2G的堆内存空间,一般直接启用的话,一定会报错,所以我们还要做相应的处理才可以。
1)、首先是使用docker拉取该容器
docker pull elasticsearch
// 若拉取较慢,可以使用国内的docker加速
docker pull registry.docker-cn.com/library/elasticsearch
2)、启动镜像(限制内存占用的启动,9200是该引擎常用端口,9300是作为分布式使用时,各个节点的通信端口)
docker run -e ES_JAVA_OPTS="-Xms256m -Xms256m" -d -p 9200:9200 -p 9300:9300 --name ES_01 73e6fdf8bd4f
3)、检查一下,是否启动成功了,浏览器中键入 你服务器的ip:9200,打开以后是这样的,表示成功了~:(不要在意这个炫酷的json格式,是浏览器插件~)

elasticsearch的测试
1)、首先我们来看下官方文档(放心,中文的!):https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
这里有最简单实用的安装和使用方法。我们先打开一个简单的示例,试一下:


按照这份文档,我们使用postman或jmeter等接口的工具来测试一下吧:

按照文档,我们使用put参数,地址格式: 服务器ip:9200/索引名称/类型名称/文件id 。可见创建成功了,返回了true。
将 HTTP 命令由 PUT 改为 GET 可以用来检索文档,同样的,可以使用 DELETE 命令来删除文档,以及使用 HEAD 指令来检查文档是否存在。如果想更新已存在的文档,只需再次 PUT 。
整合到springboot中
好的,我们看看如何把这个整合到springboot中吧。(另外注意下:我们的springboot的版本尽量在2.0+,这样你安装的elasticsearch的版本才能匹配到,不然运行的时候会有链接报错)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
SpringBoot默认支持两种技术与ES进行交互:Jest和SpringData ElasticSearch,而默认Jest是不生效的,想要使用,就要自己加载jest的jar包了。本文不做相关介绍,后边有需求,我可以单独补一篇文章。这里主要来说一下SpringData ElasticSearch的使用。
1)、首先我们启动主程序之前要添加一下的配置参数,然后直接启动主程序,看看是否可以正常运行。
spring.data.elasticsearch.cluster-name=elasticsearch #这里在浏览器中输入 服务器id:9200 就可以看到这个name是什么了
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300 #这里写的是 服务器id:9300

我们看到启动正常,并且add添加了这个9300的端口启动信息。
2)、接下来我们按照官网文档的两种写法,进行测试:
1.编写一个ElasticSearchRepository(有需要增删改查的后边自己补吧),一个需要用到的Book(注意注解的使用)。
import org.springframework.data.elasticsearch.annotations.Document; @Document(indexName = "oooodin", type = "book")
public class Book {
private Integer id;
private String bookName;
private String author; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getBookName() {
return bookName;
} public void setBookName(String bookName) {
this.bookName = bookName;
} public String getAuthor() {
return author;
} public void setAuthor(String author) {
this.author = author;
} @Override
public String toString() {
return "Book{" +
"id=" + id +
", bookName='" + bookName + '\'' +
", author='" + author + '\'' +
'}';
}
}
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
public interface BookRepository extends ElasticsearchRepository<Book, Integer> {
}
然后来测试一下看看(创建一个测试类):
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest { @Autowired
BookRepository bookRepository; @Test
public void test01() {
Book book = new Book();
book.setId(1);
book.setBookName("晋升");
book.setAuthor("ice");
bookRepository.index(book);
} }
然后我们通过浏览器访问一下:
服务器ip:9300 就可以访问看到我们添加的内容了。
SpringBoot日记——ElasticSearch全文检索的更多相关文章
- SpringBoot(九) ElasticSearch 全文检索
ElasticSearch ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用 ...
- 干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践
1.题记 2018年3月初,萌生了一个想法:对Elasticsearch相关的技术书籍做拆解阅读,该想法源自非计算机领域红火已久的[樊登读书会].得到的每天听本书.XX拆书帮等. 目前市面上Elast ...
- SpringBoot整合ElasticSearch实现多版本的兼容
前言 在上一篇学习SpringBoot中,整合了Mybatis.Druid和PageHelper并实现了多数据源的操作.本篇主要是介绍和使用目前最火的搜索引擎ElastiSearch,并和Spring ...
- springboot集成elasticsearch
在基础阶段学习ES一般是首先是 安装ES后借助 Kibana 来进行CURD 了解ES的使用: 在进阶阶段可以需要学习ES的底层原理,如何通过Version来实现乐观锁保证ES不出问题等核心原理: 第 ...
- 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 ...
- Elasticsearch全文检索工具入门
Elasticsearch全文检索工具入门: 1.下载对应系统版本的文件 elasticsearch-2.4.0.zip 1.1运行elasticsearch-2.4.0\elasticsearch- ...
- Springboot整合elasticsearch以及接口开发
Springboot整合elasticsearch以及接口开发 搭建elasticsearch集群 搭建过程略(我这里用的是elasticsearch5.5.2版本) 写入测试数据 新建索引book( ...
- SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121 ...
随机推荐
- VisualStudio编译项目时,提示bin目录和obj目录下的文件不能写的错误处理的解决办法
具体错误信息如下: Error 139 Could not write lines to file "obj\Debug\SanSuiWeb.csproj.FileListAbsolute. ...
- Python3.5中安装Scrapy包时出现问题
在Python3.5中安装Scrapy第三方库 pip install Scrapy 安装到后面出现的这类错误: error: Microsoft Visual C++ 14.0 is require ...
- Pygame安装教程
1.python --version 查看安装的Python版本, pip --version 查看安装的pip版本, 升级pip命令: python -m pip install --upgra ...
- Linux读写执行权限对目录和文件的影响
提示:这里的用户指的是普通用户 读写执行权限对root无效 对于目录来说 1)只拥有读权限 可以ls 查看目录内容,不能切换进目录中去 也不能创建目录或文件 [support@node1 opt]$ ...
- Beta冲刺(3/5)(麻瓜制造者)
今日已完成 邓弘立:完成了登录功能的重构,完成了部分商品管理功能 符天愉:利用ci开始写队友写好的管理员界面,由于后台独立开始使用一个仓库,所以晚上将alpha的版本更新到了git,并且添加了.git ...
- 描述整体程序的 app
一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下 app.js文件 App() 函数用来注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等.object参数说明如下 ...
- rowid快速分页解析
版权声明:个人随笔,实用你就COPY,看不懂不解释 https://blog.csdn.net/HelloCqk1/article/details/36628787 --分页第一步 获取数据物理地址 ...
- Excel中concatenate函数的使用方法
你还在为Excel中concatenate函数的使用方法而苦恼吗,今天小编教你Excel中concatenate函数的使用方法,让你告别Excel中concatenate函数的使用方法的烦恼. 经验主 ...
- day16 Python 内置函数 大体演示想看就看,会用就行
1.abs() 获取绝对值 a = -10 print(a.__abs__()) 结果: 10 2.all() 接收一个迭代器,如果跌电气的所有元素都为真,那么返回True,否则返回False tm ...
- zabbix监控nginx连接数量
#!/bin/bash conn=`netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}' | grep "E ...