Spring Boot集成ElasticSearch(一)

简介

ElasticSearch是一款功能强大的开源分布式搜索与数据分析引擎。在同领域类几乎没有竞争对手。ElasticSearch还被广泛运用与大数据近实时分析、包括日志分析(ELK),指标监控,信息安全等多个领域。

Spring Data Elasticsearch

Spring Data Elasticsearch是Spring提供的一种以Spring Data风格来操作数据存储的方式,它可以避免编写大量的样板代码。本篇文章主要讲解如何用Spring Data Elasticsearch来操作Elasticsearch。

后面还会写一篇文章讲解下如何用Rest High Level Client来操作Elasticsearch 7.0以上版本。

倒排索引机制

在讲解Spring Data Elasticsearch之前,倒排索引有必要简单介绍下。

一般我们用Mysql的Like也可以实现文本的模糊匹配,但如果用Like,Mysql的索引基本上用不了(除非匹配到索引的最左前缀原则),只能全表扫描,而且还要做全文匹配的话,速度会更慢,性能上满足不了。

ES用倒排索引机制提高搜索性能。

例如我们有一张表:


需求描述

构建订单搜索,支持通过订单备注全文搜索,以及订单标签的精确搜索。

1、构建索引

curl -X PUT -H "Content-Type:application/json"  
-d '{"mappings":{"order_test":{"properties":{"id":{"type":"long"},"userId":{"type":"long"},"referId":{"type":"long"},"status":{"type":"integer"},"note":{"type":"text"},"tags":{"type":"keyword"},"createTime":{"type":"date"}}}}}' 127.0.0.1:9200/test

2、 添加依赖

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

application.yaml配置

Elasticsearch默认使用9300端口与java客户端进行交互,但7.x以上版本不在支持TCP,只能使用9200端口即http restful风格的方式来与Elasticsearch交互 。

Spring Data Elasticsearch使用的是tcp的方式,所以7.x以上的高版本,已无法使用Spring Data Elasticsearch操作Elasticsearch。本文用到的版本是6.5.3,支持Spring Data Elasticsearch(tcp方式)与Elasticsearch进行交互。

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

 

posted @ 2020-03-29 21:27  Eason.Wang  阅读(164)  评论(0)    收藏  举报