Elasticsearch学习笔记

Elasticsearch学习笔记

简介

我们的应用经常需要添加检索功能,开源的ElasticSearch是目前全文搜索引擎的首选。他可以快速的存储、搜索和分析海量数据。Spring Boot通过整合Spring Data ElasticSearch为我们提供了非常便捷的检索功能支持;
Elasticsearch是一个分布式搜索服务,提供Restful API,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能,github等大型的站点也是采用了ElasticSearch作为其搜索服务

概念

以员工文档的形式存储为例:一个文档代表一个员工数据。存储数据到ElasticSearch 的行为叫做索引,但在索引一个文档之前,需要确定将文档存储在哪里。
一个ElasticSearch 集群可以包含多个索引,相应的每个索引可以包含多个类型。这些不同的类型存储着多个文档,每个文档又有多个属性。
类似关系:

  • 索引-数据库
  • 类型-表
  • 文档-表中的记录
  • 属性-列

安装

docker方式安装

elastsearch运行默认需要2G空间,可以在启动容器这修改空间大小

docker pull elastsearch
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9200:9200 -p 9300:9300 --name ES01 镜像id

官方文档

索引员工文档

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_indexing_employee_documents.html

检索文档

https://www.elastic.co/guide/cn/elasticsearch/guide/current/_retrieving_a_document.html#_retrieving_a_document

SpringBoot整合ES

添加依赖

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

分析

打开spring-boot-autoconfiguration中的data会发现由以下两个文件夹
elasticsearch01.png
说明SpringBoot默认支持两种技术和ES交互

  1. Jest(默认不生效)
    需要导入jest的工具包

    <dependency>
            <groupId>io.searchbox</groupId>
       <artifactId>jest</artifactId>
    </dependency>
  2. SpringData ElasticSearch

    • Client节点信息
    • ElasticsearchTemplate操作ES
    • 编写一个ElastsearchRepository的子接口来操作ES
Last modification:May 19th, 2020 at 01:28 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment