在项目开发中使用ElasticSearch

为什么要在项目中使用

搜索功能会产生巨大的资源消耗,沉重的数据库加载会拖垮整个应用性能,所以我们将搜索功能转移到一个外部的搜索服务器,减轻数据库的压力。es是基于Lucene(全文检索引擎工具包)的高性能搜索服务。使用于高并发的搜索应用程序。

  • 在项目中使用 Spring Data ElasticSearch
  • 简化ES的java客户端开发,底层封装了ES的客户端官方API

倒排索引

倒排索引:是搜索引擎的核心。由于正排索引的检索耗时太长,所以一般我们使用的搜索引擎都为倒排索引,是以word(关键字)作为索引。其实就是建立词语和文档的对应关系,词语哪篇文档中出现,在哪个位置出现,出现了几次。
在这里插入图片描述
详见:https://blog.csdn.net/zhanggaokai/article/details/76563206

ElasticSearch的优点

  1. 近乎实时的存储、检索数据。
  2. 扩展性好,可拓展至上百台服务器。
  3. 处理数据量大。

对比solr

solr Es
利用zookeeper进行分布式管理 自带分布式协调管理功能
支持的格式多 JSON格式
自动功能多 需通过第三方插件
适用于传统搜索应用 使用于实时搜索应用

在这里插入图片描述

为什么不使用solr

  1. solr在传统的搜索应用中性能高于ES,但在处理实时搜索时的效率低于ES;
  2. 对已有数据搜索时,solr更快,但在建立索引时,solr会产生IO阻塞,查询性能差;
  3. 随着数据量的增加,solr的搜索效率会减低,ES不变。

关系型数据库和ES的对应关系

关系型数据库 数据库 表(table) 行(rows) 列(columns)
ES服务 索引库 类型(types) 文档(document) 字段(fields)

安装部署ElasticSearch,集成分词器(略)

  • 参考网络文档

依赖jar包

  <dependency>
         <groupId>org.springframework.data</groupId>
         <artifactId>spring-data-elasticsearch</artifactId>
         <version>3.1.3.RELEASE</version>
    </dependency>

SpringDataElasticSearch注解

  • @Document : 将实体类映射成一篇文档
    iddexName 指定索引库名称
    type 指定索引库的类型(类似数据库中的表)

  • @Id : 主键

  • @Field : 将数据库表中的列转化成文档中的Field
    store: 是否存储 true存储|false不存储(默认为false)
    index: 是否建立索引true建立|false不建立(默认为true)
    type: 指定该Field的数据类型
    analyzer: 指定建立索引时的分词器
    searchAnalyzer: 指定搜索时的分词器
    copyTo: 复制到哪个Field(将多Field复制到一个Field,方便指定搜索条件)
    pattern: 日期类型,需要指定日期格式器

Spring整合ES

  • 创建数据表对应实体类,用注解方式进行映射(略)
  • 配置SpringDataElasticsearch.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/data/elasticsearch
       http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch.xsd">

    <!-- 2.配置Elasticsearch客户端连接对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值