搜索引擎——ElasticSearch汇总

本文详细介绍了ElasticSearch(ES)的核心概念、架构、集群搭建以及全文检索流程。ES是一个分布式、高扩展的全文搜索引擎,常用于日志分析、实时搜索等场景。文章讨论了ES与数据库的区别,解释了为何选择ES而非数据库进行大规模数据检索,并提供了集群脑裂问题的解决方案。全文检索流程涵盖索引库建立,ES架构涉及分片、副本分片、故障转移等核心原理。
摘要由CSDN通过智能技术生成

汇总——ElasticSearch篇

目录

汇总——ElasticSearch篇

全文检索

全文检索流程

 一、索引库的建立

ElasticSearch介绍

1、ES基本概述

2、ES是什么?

 3、为什么要使用ES

4、ES使用场景

 ElasticSearch的架构

ElasticSearch架构分析

ES集群架构

伪集群(单机Node)

集群架构

 ES文档及映射

ElasticSearch核心原理

1、索引分片原理

2、ES集群横向扩容

 3、ES故障转移

 4、ES索引存储

5、ES集群脑裂问题

6、ES文档路由原理

7、ES实战中使用


全文检索

问题1:什么是全文检索?

基本概念:对**非结构化数据/结构化数据**先建立**索引**,再对索引进行搜索**文档**的过程叫做全文检索。

什么是非结构化与结构化数据?

- 非结构化数据:没有固定的格式的数据(html,word,excel)---没有固定长度,字段约束,描述,散列数据
- 结构化数据:有固定的格式的数据(如:数据库数据)---有固定长度(varchar(50)),字段类型,描述修饰数据

搜索算法:顺序扫描法、倒排索引法

- 顺序扫描法:

  例如:

  ​        1)词典

  ​        2)没有目录--->查询一个词语,只能从第一页开始查询,一页一页的开始查询,直到查询到结果位置

  软件:数据库(加索引)

- 倒排索引法:

  例如:

  ​        1)词典

  ​        2)有目录--->查询一个词语,先查询目录,根据目录定位到词语所在的页码,直接查询到词语

问题2:数据库可以建索引,进行倒排索引搜索,为什么不能使用数据库进行大规模数据检索?

如有以下数据表:

数据库实现全文检索:

SQL:select * from table where name like '%医疗口罩%'

使用数据库检索会产生以下几种问题:

1. 全表扫描---速度非常慢

2. 字段中所有内容都需要挨个匹配---速度非常慢

3. 全文检索问题:关键词拆分问题

   ​    %医口罩% ---无法匹配任何一个结果

4. like模糊查询不走索引

问题3:什么是索引?

​            索引就是对一段文字进行分词,拆解后得到的单词,就叫做索引。

问题4:什么叫做文档?

​            文档就是一条结构化的数据(数据库一行数据)

​            1)数据结构体现:数据库一行数据

​            2)Java对象体现:JavaBean(key,value)key就是JavaBean属性

Java领域:没有搜索相关技术------>百花齐放------>各有各的规格------>lucecn定制Java搜索API接口规范------扩展(搜索,分词,索引库)

1. Lucecn是一套api,不是一个产品,可以使用lucecn开发一套搜索产品(单点故障,大规模数据维护......)
2. Solr是一个现成的产品(项目),只需把此项目部署到服务器即可实现搜索,solr的底层就是Lucecn
3. ElasticSearch是分布式搜索产品,只需把es部署到服务器即可实现搜索,es的底层也是Lucecn实现的

问题5:到底应用哪个产品呢?solr,es?

​            1)当单纯的对已有数据(数据不是实时的,规模不是很大:TB)进行搜索时,solr更快

​                 *solr适合数据量较小的项目

​                *solr适合数据固定的项目

​          2)当建立实时索引时,solr会产生IO阻塞,查询性能差,ElasticSearch具有明显优势

​                *solr不适合有实时数据写入的场景

​                *es比较适合实时数据写入的场景

​          3)随着数据量的增加,Solr的查询速率会变得更低,而ElasticSearch却没有明显的变化

​            4)大型互联网公司,实际生产环境测试,将搜索引擎从Solr转到ElasticSearch以后平均查询速度有了50倍的提升

总结:

- 二者安装都很简单;
- Solr利用zookeeper进行分布式管理,而ElasticSearch自身带有分布式协调管理功能;
- Solr支持更多格式数据,ElasticSearch只支持json文件格式;
- Solr官方提供的功能,而ElasticSearch本身更注重于核心功能,高级功能多由第三方插件提供;
- Solr在传统的搜索应用中表现好于ElasticSearch,但在处理实时搜索引用时效率明显低于ElasticSearch。

最终结论:

​    Solr是传统搜索应用的有力解决方案,但ElasticSearch更适用于新兴的实时搜索应用。

全文检索流程

 一、索引库的建立

索引库创建流程:

索引库数据检索流程:

ElasticSearch介绍

1、ES基本概述

2、ES是什么?

1)ES=ElasticSearch简称,ElasticSearch是一个开源的**高扩展**的**分布式**全文检索引擎。

2)ElasticSearch也使用Java开发并使用**Lucene**作为其核心来实现所有索引和搜索的功能。但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变为简单。

ES是一个分布式的,高扩展的搜索框架,其架构图如下所示:

ES是面向文档型数据库,在这里一条数据就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:

{
    "name" : "John",
    "sex" : "Male",
    "age" : 25,
    "birthDate": "1990/05/01",
    "about" : "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

 3、为什么要使用ES

- 从项目开发与维护出发

  实际项目实战中,几乎每个系

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值