分布式搜索引擎ElasticSearch

简介: ElasticSearch是基于Lucene的开源分布式搜索引擎,支持全文检索、日志分析与实时监控。结合Kibana、Logstash等组件构成ELK技术栈,广泛应用于搜索、日志处理等领域,具备高扩展性与高性能优势。

分布式搜索引擎ElasticSearch

1.初识elasticsearch
1.1.了解ES
1.1.1.elasticsearch的作用
elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容,例如:
在GitHub搜索代码

2,030,116 CODE RESULTS

SORT:BEST MATCH

REPOSITORIES

7K

CODE

7M

LYLBP/JAVA_MODELSIMPLE

1M

COMMITS

SRC/MAIN/JAVA/COM/LYLBP/MANAGER/ELASTICSEARCH/CONFIG/ESCONFIGJAVA

PACKAGE COM.LYLBP.MANAGER.ELASTICSEARCH.CONFIG;

95K

ISSUES

IMPORT ORG.ELASTICSEARCH.CLIENT.RESTHIGHLEVELCLIENT;

422

DISCUSSIONS

BETA

IMPORT ORG.SPRINGFRAMEWORK.CONTEXT.ANNOTATION.CONFIGURATION;

PACKAGES

168

IMPORT ORG.SPRINGFRAMEWORK.DATA.ELASTICSEARCH.CLIENT.CLIENTCONFIGURATION;

5

MARKETPLACE

IMPORT ORG.SPRINGFRAMEWORK.DATA.ELASTICSEARCH.CLIENT.RESTCLIENTS;

SHOWING THE TOP THREE MATCHES LAST INDEXED 17 DAYS AGO

JAVA

TOPICS

266


在电商网站搜索商品

0片

搜索

IPHONE

我的购物车

华为

IPHONE12

手机                                                                                                  

IPHONE12MINI

IPHONE 11

IPHONE 12 PRO

IPHONEXR IPHONE8

LIPHONEX

IPHONEXS

拍卖

金融

闪购

生鲜

全部商品分类

美妆馆

超市

共88万+件商品1/100

新品

价格

评论数

综合

销量1

美好

美好

美好

生活

生活

生活

领券立减800元

5999

¥6799.00

¥6099.00

¥149.00

¥10099.00

¥4899.00

APPLE IPHONE 11(A223)

APPLE20WUSB-C手机充电器插头充电头

APPLE IPHONE 12 (A2404)128G8 紫色支

APPLE IPHONE 12 PRO MAX (A2412) 256GB

APPLE苹果IPHONE125G全网通双卡手机

持移动联通电信5G双卡双待手机[抢券

128GB白色移动联通电信4G手机双卡双

海蓝色支持移动联通电信5G双卡双待手

适配器适用 PHONE 12 IPAD 快速充电[惊

蓝色128GB

去看二手

去看二手

200万+条评价

200+条评价

100万+条评价

500万+条评价

20万+条评价


在百度搜索答案

GOQGLE

XY

ILLEGALARGUMENTEXCEPTION

HTTPS://STACKOVERFLOW.COM>QUESTIONS>WHEN-.....翻译此页

WHEN SHOULD AN LLEGALARGUMENTEXCEPTION BE THROWN? - STACK ..

2013年3月4日-THE API DOC FOR LILLEGALARQUMENTEXCEPTION : THROWN TO INDICAT A METHOD

HAS BEEN PASSED AN ILLEGAL OR INAPPROPRIATE ARGUMENT.

6个回答 最佳答案:TREAT LLLEGALARGUMENTEXCEPTION AS A PRECONDITIONS CHECK,AND CONSIDER T...

2个回答2018年6月1日

HOW TO USE "THROWS LLLEGALARGUMENTEXCEPTION" IN ...

3个回答

2015年7月27日

ERROR: JAVA.LANG.LLEGALARGUMENTEXCEPTION ...

2008年9月6日

LLLEGALARGUMENTEXCEPTION OR NULLPOINTEREXCEPTION ...

26个回答

个回答

2010年1月22日

WHAT IS THE BEST WAY TO CATCH AN...

STACKOVERFLOW.COM站内的其它相关信息

翻译此页

HTTPS://AIRBRAKE.IO>BLOG>ILLEGALARGUMENTEXC.....翻译

JAVA EXCEPTION HANDLING - LLEGALARGUMENTEXCEPTION - AIRBRAKE

2017年8月4日-MOVING RIGHT ALONG SERIES, TODAY

WE'LL BE DIGGING INTO JAVA.LANG LLIEGALARGUMENTEXCEPTION.


在打车软件搜索附近的车

郭家

点我领车费

黑马程序员训练营(上

海校区)

为您推荐附近适合的上车点

航头路/航都路(路*.

口)东南侧

沪南公路

五一出行必看知识点!点我

上海市今日天气阴,17C3~23C

你将从黑马程序员训练营(上海校区)上车>

输入你的目的地


1.1.2.ELK技术栈
elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域:

[FILEBEAT SYSTEM] SYSLOG DASHBOARD ECS

DASHBOARD

SYSLOG HOSTNAMES AND PROCESSES [FILEBEAT SYSTEM] ECS

SYSLOG EVENTS BY HOSTNAME [FILEBEAT SYSTEM]ECS

DANS-MACBOOK-PRO

20

DANS-MACBOOK-PRO.L.

07:00

06:00

05:00

10:00

11:00

DANS-MACBOOK-PRO

09:00

12:00

04.00

COM.APPLE.XPC.LAUNC

PBOGS人S

#TIMESTAMP PER 10 MINUTES

ZOOM.US

CAMTASIA 2018 SNAGITHETPER2019

SYSIOG LOGS [FILEBEAT SYSTEM]ECS

1-50 OF 165

TIME

PROCESS.NAME

MESSAGE

HOST.HOSTNAME

APR 3,2019 & 14:06:08.000 DANS-MACBOOK-PRO

ASSERTION FALED 1BE226: LOXPC DYIB +91033(4938829-09C8-355C-8558-97E070884EC5):0X89

PREVIEW

APR 3,2019 14:05:24.000 DANS-MACBOOK-PRO

ARCHIVE UTAITY

EBUG

ENDUGH HAS BRS BRN ACTIVETED TROUGH INDE SUNONC OR S PLSS,PLEEVETCH TO XPC OR BOO.CHNCKIN ACDIS ANCK

COM.APPLE XPC.LAUNCH

APR 3.2019 @14:05:13.000  DANS-MACBOOK-PRO

OOK(8150])

APR 3.2019 & 14:03:36.000  DANS-MACBOOK-PRO

SYSLOGD

ASL SENDER STATISTICS

DEPRECATFD USE IN BODISOATCH CLENT:DISOATCH SOURCE

ANR3.2019E 13-5900000 DANS-MAROOK-PRO

SWITCHRESX CONTROL


而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。

KIBANA

数据可视化

存储,计算

ELASTICSEARCH

搜索数据

LOGSTASH

BEATS

数据抓取


1.1.3.elasticsearch和lucene
elasticsearch底层是基于lucene来实现的。Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。官网地址:https://lucene.apache.org/

DOUG

LUCENE的优势:

CUTTING

易扩展

高性能(基于倒排索引)

LUCENE的缺点:

只限于JAVA语言开发

学习曲线陡峭

不支持水平扩展

APACHE

LUCENE


elasticsearch的发展历史:
2004年Shay Banon基于Lucene开发了Compass
2010年Shay Banon 重写了Compass,取名为Elasticsearch。

SHAY

官网地址:HTTPS://WWW.ELASTIC.CN/,目前最新的版本是:7.12.1

BANON

相比与LUCENE,ELASTICSEARCH具备下列优势:

支持分布式,可水平扩展

提供RESTFUL接口,可被任何语言调用

ELASTIC


1.1.4.为什么不是其他搜索技术?
目前比较知名的搜索引擎技术排名:

RANK

SCORE

DATABASE MODEL

DBMS

MAY

APR MAY

MAY

MAY

APR

2021  2021

2020

2021  2020

2021

ELASTICSEARCH

1.

SEARCH ENGINE,MULTI-MODEL

155.35 +3.18

+6.23

1.

2.

2.

92.11 +3.62

2.

+4.36

SPLUNK

SEARCH ENGINE

3.

51.19

3.

-1.39

SOLR

3.

+0.59

SEARCH ENGINE,MULTI-MODEL

4.

9.52

4.

MARKLOGIC

-1.44

4.

-0.40

MULTI-MODEL

5.

7.72

5.

ALGOLIA

8.

+3.25

SEARCH ENGINE

-0.15

6.

7.58

SPHINX

6.

6.

+1.55

+0.53

SEARCH ENGINE

7.

MICROSOFT AZURE SEARCH

6.05-0.49

7.

5.

-0.07

SEARCH ENGINE

8.

4.38-0.39

ARANGODB

-0.30

MULTI-MODEL

8.

7.

9.

3.44 +0.27 +1.09

VIRTUOSO

MULTI-MODEL

9.

11.

10.

2.20-0.03

AMAZON CLOUDSEARCH

10.

-0.39

SEARCH ENGINE

10.

11.

XAPIAN

-0.02 +0.13

0.88

11.

12.

SEARCH ENGINE

12.

0.77

CRATEDB

MULTI-MODEL

12.

13.

+0.02 +0.09

13.

SERVICE

ALIBABA CLOUD LOG S

0.44

SEARCH ENGINE

13.

-0.01

+0.17

15


虽然在早期,Apache Solr是最主要的搜索引擎技术,但随着发展elasticsearch已经渐渐超越了Solr,独占鳌头:

DB-ENGINES RANKING OF SEARCH ENGINES

ELASTICSEARCH

SOLR

100

JANUARY 2016

EASTICSEARCH: 77.212

80

09

SCORE (LOGARITHMIC SCALE)

40

20

10

8

MAY 2021,DB-ENGINES.COM

2018

2013

2019

2015

2020

2016

2017

2014

2021


1.1.5.总结
什么是elasticsearch?
一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能
什么是elastic stack(ELK)?
是以elasticsearch为核心的技术栈,包括beats、Logstash、kibana、elasticsearch
什么是Lucene?
是Apache的开源搜索引擎类库,提供了搜索引擎的核心API
1.2.倒排索引
倒排索引的概念是基于MySQL这样的正向索引而言的。
1.2.1.正向索引
那么什么是正向索引呢?例如给下表(tb_goods)中的id创建索引:

搜索手机

SELECT* FROM TB_GOODS WHERE TITLE LIKE '%手机%'

ID

TITLE

PRICE

1

小米手机

3499

逐条数据扫描

华为手机

4999

2

丢弃

判断是否包含'手机

3

华为小米充电器

49

小米手环

4

49

存入结果集

正向索引

2

华为手机

4999

1

小米手机

3499


如果是根据id查询,那么直接走索引,查询速度非常快。但如果是基于title做模糊查询,只能是逐行扫描数据,流程如下:
1)用户搜索数据,条件是title符合"%手机%"
2)逐行获取数据,比如id为1的数据
3)判断数据中的title是否符合用户搜索条件
4)如果符合则放入结果集,不符合则丢弃。回到步骤1
逐行扫描,也就是全表扫描,随着数据量增加,其查询效率也会越来越低。当数据量达到数百万时,就是一场灾难。
1.2.2.倒排索引
倒排索引中有两个非常重要的概念:
文档(Document):用来搜索的数据,其中的每一条数据就是一个文档。例如一个网页、一个商品信息
词条(Term):对文档数据或用户搜索数据,利用某种算法分词,得到的具备含义的词语就是词条。例如:我是中国人,就可以分为:我、是、中国人、中国、国人这样的几个词条
创建倒排索引是对正向索引的一种特殊处理,流程如下:
将每一个文档的数据利用算法分词,得到一个个词条
创建表,每行数据包括词条、词条所在文档id、位置等信息
因为词条唯一性,可以给词条创建索引,例如hash表结构索引
如图:

词条

文档ID

(TERM)

ID

TITLE

PRICE

1,3,4

小米

1

3499

小米手机

1,2

手机

华为手机

2

4999

华为

2,3

3

华为小米充电器

49

3

充电器

小米手环

4

299

手环

4

正向索引

倒排索引


倒排索引的搜索流程如下(以搜索"华为手机"为例):
1)用户输入条件"华为手机"进行搜索。
2)对用户输入内容分词,得到词条:华为、手机。
3)拿着词条在倒排索引中查找,可以得到包含词条的文档id:1、2、3。
4)拿着文档id到正向索引中查找具体文档。
如图:

倒排索引

词条

文档ID

(TERM)

搜索'华为手机

1 ,3 ,4

小米

分词

手机

1,2

华为

2,3

得到:'华为,手机'两个词条

3

充电器

去词条列表查询

手环

4

文档ID

得到每个词条所在文档ID:

正向索引

华为:2,3

手机:1,2

ID

TITLE

PRICE

根据文档ID

查询文档

小米手机

3499

1

2

华为手机

4999

得到ID为1,2,3的文档

3

华为小米充电器

49

存入结果集

4

小米手环

299


虽然要先查询倒排索引,再查询倒排索引,但是无论是词条、还是文档id都建立了索引,查询速度非常快!无需全表扫描。
1.2.3.正向和倒排
那么为什么一个叫做正向索引,一个叫做倒排索引呢?
正向索引是最传统的,根据id索引的方式。但根据词条查询时,必须先逐条获取每个文档,然后判断文档中是否包含所需要的词条,是根据文档找词条的过程。
而倒排索引则相反,是先找到用户要搜索的词条,根据词条得到保护词条的文档的id,然后根据id获取文档。是根据词条找文档的过程。
是不是恰好反过来了?那么两者方式的优缺点是什么呢?
正向索引:
优点:
可以给多个字段创建索引
根据索引字段搜索、排序速度非常快
缺点:
根据非索引字段,或者索引字段中的部分词条查找时,只能全表扫描。
倒排索引:
优点:
根据词条搜索、模糊搜索时,速度非常快
缺点:
只能给词条创建索引,而不是字段
无法根据字段做排序
2.小节
由于ES课程API文档较多,这里统一汇总如下,有需自取

ES.xmind

(387 KB)



相关文章
|
1天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
938 150
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1662 8
|
7天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
617 152
|
9天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
587 15
|
9天前
|
人工智能 自然语言处理 API
Next AI Draw.io:当AI遇见Draw.io图表绘制
Next AI Draw.io 是一款融合AI与图表绘制的开源工具,基于Next.js实现,支持自然语言生成架构图、流程图等专业图表。集成多款主流大模型,提供智能绘图、图像识别优化、版本管理等功能,部署简单,安全可控,助力技术文档与系统设计高效创作。
672 151