当前位置:   article > 正文

# 分布式搜索引擎-- elasticsearch基础_搜索引擎elasticsearch

搜索引擎elasticsearch

1.1什么是elasticsearch?        

elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容,,可以用来实现搜索、日志统计、分析、系统监控等功能

1.1.1什么是ELK技术栈?

   是以elasticsearch为核心的技术栈,都包括:

  • ElasticSearch(存储,计算,搜索数据)
  • kibana(数据可视化)
  • Logstash(数据抓取)
  • Beats(数据抓取)

被广泛应用在日志数据分析、实时监控等领域.

 1.1.2什么是Lucene?

  • 是Apache的开源搜索引擎类库,提供了搜索引擎的核心API,elasticsearch底层是基于lucene来实现的。

  • Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。官网地址:Apache Lucene - Welcome to Apache Lucene

 2.1ElasticSearch采用"倒排索引",搜索很快


  •  正向索引:从第一个开始一行一行的搜,需要遍历所有,速度慢,逐行扫描,也就是全表扫描,随着数据量增加,其查询效率也会越来越低。当数据量达到数百万时,就是一场灾难。
  •  倒排索引:保存文章后,分词器会拆成一个一个的词,这个词那个文档用过,都会记录下来文档id比如想搜 "华为手机" ,倒推出来,文档id(1,2,3),和华为手机有关系,直接根据这个(1,2,3),列表去磁盘查找,速度很快.
            总之,倒排索引就是你给我一个词,我能定位到那几个文档用过他,我直接去查用过他的文档,无需全表扫描。

3.1Mysql和Elasticsearch

  • Mysql:擅长事务类型操作,可以确保数据的安全和一致性

  • Elasticsearch:擅长海量数据的搜索、分析、计算

    因此在企业中,往往是两者结合使用:

  • 对安全性要求较高的写操作,使用mysql实现

  • 对查询性能要求较高的搜索需求,使用elasticsearch实现

  • 两者再基于某种方式,实现数据的同步,保证一致性

4.1.1mapping映射属性

      索引库就类似MySQL数据库表,mapping映射就类似表的结构。

      我们要向es中存储数据,必须先创建“库”和“表”。

  • mapping是对索引库中文档的约束,常见的mapping属性包括:
  • type:字段数据类型,常见的简单类型有:
  •   - 字符串:text(可分词的文本)、keyword(指定不拆分,如:品牌、国家、ip地址)
  •   - 数值:long、integer、short、byte、double、float、
  •   - 布尔:boolean
  •   - 日期:date
  •   - 对象:object
  • - index:是否创建索引,默认为true
  • - analyzer:使用哪种分词器
  • - properties:该字段的子字段

 


5.1通过Java操作ES ,RestAPI

  • ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html
  • 其中的Java Rest Client又包括两种:
    - Java Low Level Rest Client
    - Java High Level Rest Client 

 5.2RestHighLevelClient 

 在elasticsearch提供的API中,与elasticsearch一切交互都封装在一个名为RestHighLevelClient的类中,必须先完成这个对象的初始化,建立与elasticsearch的连接。分三步:

  • 第一步:引入es的RestHighLevelClient依赖:
  1. <dependency>
  2. <groupId>org.elasticsearch.client</groupId>
  3. <artifactId>elasticsearch-rest-high-level-client</artifactId>
  4. </dependency>
  • 第二步:因为SpringBoot默认的ES版本是7.6.2,所以我们需要覆盖默认的ES版本:
  1. <properties>
  2. <java.version>1.8</java.version>
  3. <elasticsearch.version>7.12.1</elasticsearch.version>
  4. </properties>
  • 第三步:在application.yml加配置(根据自己的情况来配置,我这是以部署到linux上为例)
    ​​​​​
    1. spring:
    2. elasticsearch: # es
    3. rest:
    4. uris: 192.168.74.129:9200 #指定自己linux的IP地址,9200是固定端口

5.3RestClient操作索引库

JavaRestClient操作elasticsearch的流程基本类似。核心是client.indices()方法来获取索引库的操作对象。

索引库操作的基本步骤:

- 初始化RestHighLevelClient
- 创建XxxIndexRequest。XXX是Create、Get、Delete
- 准备DSL( Create时需要,其它是无参)
- 发送请求。调用RestHighLevelClient#indices().xxx()方法,xxx是create、exists、delete

 5.4RestClient操作文档

文档操作的基本步骤:

- 初始化RestHighLevelClient
- 创建XxxRequest。XXX是Index、Get、Update、Delete、Bulk
- 准备参数(Index、Update、Bulk时需要)
- 发送请求。调用RestHighLevelClient#.xxx()方法,xxx是index、get、update、delete、bulk
- 解析结果(Get时需要)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/819945
推荐阅读
相关标签
  

闽ICP备14008679号