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. 字面量(literal)与 C 语言复合字面量(compound literals)

    在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)(字面量是相对变量常量等定义的,无论是常量还是变量,其值在某一时刻总是确定的,只是变量可以反复赋值.刷新 ...

  2. 机器学习: 特征脸算法 EigenFaces

    人脸识别是机器学习和机器视觉领域非常重要的一个研究方向,而特征脸算法是人脸识别里非常经典的一个算法,EigenFaces 是基于PCA (principal component analysis) 即 ...

  3. 「LuoguP3808」 【模板】AC自动机(简单版)

    题目背景 通过套取数据而直接“打表”过题者,是作弊行为,发现即棕名. 这是一道简单的AC自动机模板题. 用于检测正确性以及算法常数. 为了防止卡OJ,在保证正确的基础上只有两组数据,请不要恶意提交. ...

  4. 前端开发 --- CSS参考手册

    目录 1 选择器 1.1 通用选择器 1.2 层次选择器 1.3 伪类选择器 1.3.1 动态伪类选择器 1.3.2 目标伪类选择器 1.3.3 UI元素状态伪类选择器 1.3.4 结构伪类选择器 1 ...

  5. linux sdk配置

    http://blog.csdn.net/wudj810818/article/details/51251408,环境变量配置不要用 SDK环境变量: export PATH=$PATH:/opt/a ...

  6. 2.6 hive分区表

    一.背景 ######### 分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件. Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成更小的数据集. ...

  7. app UI测试之UIAutomator

    执行UIAutomator测试步骤 1.新建Java项目,导入android.jar和uiautomator.jar包,继承UiAutomatorTestCase 2.生成编译文件 android c ...

  8. 11.ClientCredential模式总结

    11.ClientCredential模式总结 服务端定义的Resource叫做api Resource API默认是被保护的 第三方的客户端先去请求 Server拿到access token.带着t ...

  9. 4.1 手写Java PriorityQueue 核心源码 - 原理篇

    本章先讲解优先级队列和二叉堆的结构.下一篇代码实现 从一个需求开始 假设有这样一个需求:在一个子线程中,不停的从一个队列中取出一个任务,执行这个任务,直到这个任务处理完毕,再取出下一个任务,再执行. ...

  10. E20190226-hm

    shallow  adj. 浅的,肤浅的; 表面的,皮毛的; (水,器物等) 浅的; (呼吸) 浅的;  n. 浅处; 浅滩;