ElasticSearch概述+SpringBoot 集成ES

发布时间:2024年01月17日

ES概述

开源的、高扩展的、分布式全文检索引擎【站内搜索】

解决问题

1.搜索词是一个整体时,不能拆分(mysql整体连续)

2.效率会低,不会用到索引(mysql索引失效)

解决方式

进行数据的存储(只存储查询显示的内容)和检索

其他功能:日志统计、分析、监控。

ES名词解释

索引:同类型的文档集合

文档:以json形式,一条数据就是一个文档(mysql中的一行记录)

字段:json文档中的字段

映射:索引(表)中的文档(记录数据)约束:字段名称、类型,是否分词

正向索引:mysql

倒排索引:ElasticSearch使用倒排索引,对搜索内容进行分词,分出来的词成为词条,对词条进行分类统计,由高到低进行排序。

ES操作

索引操作

#创建索引库(PUT),查询索引库(GET),删除索引库(DELETE),添加新字段(PUT /news/_mapping)
PUT /news
{
  "mappings": {
    "properties": {
      "id":{
        "type": "integer",
        "index": false
      },
      "title":{
        "type": "text",
        "analyzer": "standard"
      },
      "content":{
        "type": "text",
        "analyzer": "standard"
      }
    }
  }
}

GET /news
DELETE /news

PUT /news/_mapping
{
  "properties": {
    "count":{
      "type": "long",
      "index": false
    }
  }
}

文档操作

#文档操作
PUT /news/_doc/1
{
  "id":1,
  "title":"美丽中国",
  "content":"当前,我国经济社会发展已进入加快绿色化、低碳化的高质量发展阶段,生态文明建设仍处于压力叠加、负重前行的关键期,生态环境保护结构性、根源性、趋势性压力尚未根本缓解,资源压力较大、环境容量有限、生态系统脆弱的国情没有改变,经济社会发展绿色转型内生动力不足,生态环境质量稳中向好的基础还不牢固,污染物和碳排放总量仍居高位,部分区域生态系统退化趋势尚未根本扭转,美丽中国建设任务依然艰巨。",
  "count":20
}

PUT /news/_doc/2
{
  "id":2,
  "title":"不忘初心",
  "content":"当前,我国经济社会发展已进入加快绿色化、低碳化的高质量发展阶段,生态文明建设仍处于压力叠加、负重前行的关键期,生态环境保护结构性、根源性、趋势性压力尚未根本缓解。",
  "count":10
}
GET /news/_doc/1
DELETE /news/_doc/1
POST /news/_update/1
{
  "doc":{
    "title":"中国"
  }
}

GET /news/_search
{
  "query": {
    "match": {
      "content":"我国"
    }
  }
}

SpringBoot 集成 ES

指定版本,版本必须与安装的 ES 版本一致

<properties>
<java.version>1.8</java.version>
<elasticsearch.version>7.6.1</elasticsearch.version>
</properties>

添加依赖

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
@RestController
@RequestMapping(path = "/index/elastic")
public class ElasticSearchController {
    @Autowired
    RestHighLevelClient restHighLevelClient;

    @GetMapping(value = "/test")
    public String test() throws IOException {
        //创建索引库
        CreateIndexRequest request = new CreateIndexRequest("users");
        CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
        //判断索引库是否存在
        //GetIndexRequest request1 = new GetIndexRequest("users");

        return "success!";
    }
}
RestHighLevelClient类
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ElasticSearchConfig {

    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")));
        return client;
    }

}
文章来源:https://blog.csdn.net/weixin_63541561/article/details/135576073
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。