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. 【EOJ Monthly 2018.2 (Good bye 2017)】

    23333333333333333 由于情人节要回家,所以就先只放代码了. 此题是与我胖虎过不去. [E. 出老千的 xjj] #include<cstdio> #include<c ...

  2. pycharm 开发连接linux 服务器

    这样就可以了.....

  3. C++之匿名对象解析

    我们知道在C++的创建对象是一个费时,费空间的一个操作.有些固然是必不可少,但还有一些对象却在我们不知道的情况下被创建了.通常以下三种情况会产生临时对象:   1,以值的方式给函数传参:   2,类型 ...

  4. hibernate的优缺点和适用场合

    Hibernate优点: 1.对象化.人员以面相对象的思想来操作数据库.Hibernate支持许多面向对象的特性,如组合,继承,多态等. 2.更好的移植性.对于不同的数据库,开发者只需要使用相同的数据 ...

  5. Android开发技巧--引用另一个工程

    现在已经有了一个Android工程A.我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个Android工程B,想在B中引用A. 1:把工程A做成纯Jar包,这样其他的工程就可以直接引用 ...

  6. 理解复杂的const和typedef和指针的关系

    // container.cpp : 定义控制台应用程序的入口点. //   #include "stdafx.h" #include<iostream> #inclu ...

  7. 【Hadoop】MapReduce笔记(一):MapReduce作业运行过程、任务执行

    一.MR作业运行过程 JobClient的runJob()方法:新建JobClient实例,并调用其submitJob()方法.提交作业后,runJob()每秒轮询作业进度,如果发现上次上报后信息有改 ...

  8. Python3.6 字典的内置方法

    1.dict.clear(self) 删除字典内所有元素 2.dict.copy(self) 返回一个字典的浅复制,拷贝父对象,不会拷贝对象的内部的子对象 3.dict.fromkeys(self,  ...

  9. 在实战中使用nginx-rtmp遇到的TCP连接问题分析

    在实战中使用nginx-rtmp遇到的TCP连接问题分析 背景 前段时间公司做了一次体育赛事的现场直播,网络由某通信公司负责搭建,主要测试5G CPE上行网络的带宽和稳定性,为了做到万无一失,他们同时 ...

  10. shell初级-----更多结构化命令

    for命令 bash shell提供了for命令,允许你创建一个遍历一系列的循环. for var in list do commands done 1.读取列表中的值 for命令最基本的用法就是遍历 ...