Elasticsearch:一个优秀的搜索引擎框架

搜索方面最基本的是SQL的like语句

进一步的有Lucene框架

后来有企业级的Solr框架

而Elasticsearch框架尤其适合于数据量特别大的

Elasticsearch底层也是由Lucene实现的

应用:Github、维基百科、StackOverflow

Elasticsearch部署:

纯Java开发,因此必备JDK

采用5.6版本而不是最新版,因为SpringBoot可能不支持

推荐部署到Linux服务器,但是这里为了方便我直接部署在本地Windows系统

下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.8.zip

下载好进入BIN目录,运行elasticsearch.bat运行

如果报错,通常情况是机器配置不够或者以错误地root权限启动了

Win10高配机器不存在这种问题

http://127.0.0.1:9200/:进入主页

http://localhost:9200/_cat/health?v:查看集群状态

localhost:9200/_cat/indices?v:查看索引列表

参考官网,创建索引:

查看我创建的索引:

加入数据:

查看我加入的数据:

SpringBoot进行整合

依赖:

        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

查看依赖后发现,SpringBoot2.1.4采用的elasticsearch是6.4.3版本

为了确保不出问题,我重新下载6.4.3版本,事后我验证了,就以下的这些基本操作,es的版本可以不影响

新建实体类Article:

搜索的对象就是文章

package org.dreamtech.esdemo.domain;

import java.io.Serializable;

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

/**
* 文章对象
*
* @author Xu Yiqing
*
*/
@Document(indexName = "blog", type = "article")
public class Article implements Serializable { private static final long serialVersionUID = 8210249797764830332L; private long id; private String title; private String summary; private String content; private int pv; public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public String getSummary() {
return summary;
} public void setSummary(String summary) {
this.summary = summary;
} public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
} public int getPv() {
return pv;
} public void setPv(int pv) {
this.pv = pv;
} }

对ES进行配置:

spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
spring.data.elasticsearch.repositories.enabled=true

对ES进行操作默认的接口:

package org.dreamtech.esdemo.repository;

import org.dreamtech.esdemo.domain.Article;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Component; @Component
public interface ArticleRepository extends ElasticsearchRepository<Article, Long> {
}

Controller层测试代码:

package org.dreamtech.esdemo.controller;

import org.dreamtech.esdemo.domain.Article;
import org.dreamtech.esdemo.repository.ArticleRepository;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class ArticleController { @Autowired
private ArticleRepository articleRepository; @GetMapping("/save")
public Object save(long id, String title) { Article article = new Article();
article.setId(id);
article.setPv(123);
article.setContent("Springboot整合Elasticsearch");
article.setTitle(title);
article.setSummary("搜索框架整合"); articleRepository.save(article); return "save";
} @GetMapping("/search")
public Object search(String title) {
QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", title);
Iterable<Article> list = articleRepository.search(queryBuilder);
return list;
} }

实际测试:

用这种方式保存多个文章后就可以进行搜索了:

SpringBoot 2.x (12):整合Elasticsearch的更多相关文章

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

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

  2. SpringBoot 2.x 整合ElasticSearch的demo

    SpringBoot 2.x 整合ElasticSearch的demo 1.配置文件application.yml信息 # Tomcat server: tomcat: uri-encoding: U ...

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

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

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

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

  5. SpringBoot整合elasticsearch

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

  6. SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle简单整合

    记录一下SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle整合的一个小例子. 1.在Gradle内加入相关jar包的依赖: compile('o ...

  7. springboot整合elasticsearch入门例子

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

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

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

  9. SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)

    准备工作 环境准备 JAVA版本 java version "1.8.0_121" Java(TM) SE Runtime Environment (build 1.8.0_121 ...

随机推荐

  1. Awesome Flask Awesome

    A curated list of awesome Flask resources and plugins Awesome Flask Framework Admin interface Authen ...

  2. Win10+CUDA9.0+cudnn7.1安装

    CUDA下载 cudnn下载 CUDA默认安装即可. cudnn下载解压之后,将对应的文件分别拷贝到CUDA  Toolkit中即可: 对应的文件夹为: 若为默认安装,则应分别拷贝到的文件夹如下: C ...

  3. HBase之四--(3):hbasehbase分页查询

    为了广大技术爱好者学习netty,在这里帮新浪微博@nettying宣传下他出版的新书 <netty权威指南>@nettying兄在华为NIO实践多年,这本书是他的技术和经验的一个结晶.N ...

  4. Vue 项目中添加全局过滤器以及全局混合mixin

    可以在.vue文件中定义局部使用的过滤器 export default{ data(){ return [] }, filters:{ toUpperCase:function(value){ ret ...

  5. studio 集成 Genymotion后打开模拟器出错、打开虚拟机VirtualBox出错

    好吧,首先给出错误类型如下: “Unable to load R3 module D:\Program Files\VirtualBox/VBoxDD.DLL (VBoxDD): GetLastErr ...

  6. PHP实用小程序(七)

    <? //用COOKIE保存投票人的投票记录 if($vote && !$already_voted) SetCookie("already_voted",& ...

  7. 带emoji表情弹出层的评论框,semantic+emoji picker,java.sql.SQLException: Incorrect string value: '\xF0\x9F..'

    在自己做一个项目玩时,在做评论的时候. 选中了semantic.js原型,这个在国内用的不是很多,但是在github上star数量很高,想当初我想找一个js框架是就在上面找的. semantic中文网 ...

  8. hql实现对表的某几个(部分)字段查询

    如何利用hql实现对表的部分字段查询 假如,我们有一张person表,对应实体类Person,表中有字段name,age,sex,address 哪我们如何来实现全部和部份字段的查询呢? hql的写法 ...

  9. IntelliJ IDEA的自动提示貌似是区分大小写的,首字母小写的话,怎么都提示不出来。

    IntelliJ IDEA的自动提示貌似是区分大小写的,首字母小写的话,怎么都提示不出来. File>Settings>editor >general >code comple ...

  10. unity2d 动画

    1 资源test.jpg(如下)放入Resources文件夹 2 切割图片 点击图片,在inspector中,选择Texture Type为Sprite(2D and UI),然后点击Sprite E ...