Elasticsearch 是分布式、可扩展、实时的搜索与数据分析引擎,一般简称ES。
(资料图)
Elasticsearch 主要提供一下功能和特性:
数据存储:Elasticsearch 是一个分布式文档存储引擎。支持多达 PB 级别的结构化或者非结构化数据存储和查询。搜索与分析:建立在全文搜索引擎库Apache Lucene™
基础之上,提供了一个简单、连贯的 REST API,用于管理您的集群以及索引和搜索您的数据可拓展性与弹性:支持从单个节点到上百个节点的任意扩展Elasticsearch是一个强大的分布式搜索和分析引擎,可以应用于许多场景。以下是一些常见的Elasticsearch应用场景:
搜索引擎:Elasticsearch最初是一个搜索引擎,因此在构建需要强大搜索功能的应用程序时非常有用。例如,电子商务网站可以使用Elasticsearch来提供高效的产品搜索,以及建议和纠错功能。日志分析:Elasticsearch是一个流行的日志分析工具,它可以通过将日志数据存储在Elasticsearch中,然后使用Kibana来可视化和分析日志数据,帮助企业发现潜在的问题和异常。业务智能:企业可以使用Elasticsearch来收集和分析各种数据源(例如数据库、网络、日志等)来进行业务智能分析。它可以帮助企业识别趋势和模式,以及评估业务表现和关键指标。安全监控:Elasticsearch可以用于安全监控,例如实时监视网络数据、日志数据和安全事件等。这可以帮助企业快速检测并解决潜在的安全问题。实时数据处理:Elasticsearch支持实时索引和搜索功能,因此可以作为实时数据处理平台使用。例如,当需要实时监控应用程序性能时,可以使用Elasticsearch来收集和分析性能指标。总之,Elasticsearch非常适合需要强大搜索和分析功能的应用程序,并且可以应用于许多不同的场景,例如日志分析、业务智能、安全监控和实时数据处理等。
ELK是三个开源工具的缩写,分别是Elasticsearch、Logstash和Kibana。
这三个工具通常一起使用(经常还会配合Beats组件一起使用),作为完整的日志管理和分析解决方案。
Elasticsearch:Elasticsearch是一个基于Lucene的分布式搜索和分析引擎,可以用于快速存储、搜索和分析大量结构化和非结构化数据。Logstash:Logstash是一个用于处理和转换日志数据的开源数据收集引擎,可以从多种数据源中收集、转换和发送数据到各种目标。Kibana:Kibana是一个用于可视化和分析日志数据的开源分析和可视化平台,可以使用丰富的图表、图形和地图展示数据,并通过查询和过滤等功能实现数据探索和可视化。Beats:轻量级的数据采集器Elasticsearch 官方文档 Set up Elasticsearch 介绍了不同场景下Elasticsearch的安装方式。
Kibana 官方文档 Set up 介绍了不同场景下Kibana的安装方式。
Elasticsearch 提供了Restful风格的API, 可以直接使用http客户端工具如curl
等直接操作数据。
但是就学习而言,使用可视化工具Kibana更便捷一些。
此处简单介绍通过Docker快速搭建Elasticsearch 和 Kibana的学习华景。
[windealli@VM-52-29-centos ~]$ docker network create elastic[windealli@VM-52-29-centos ~]$ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.9[windealli@VM-52-29-centos ~]$ docker run -d --name es01-test --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.17.9[windealli@VM-52-29-centos ~]$ docker pull docker.elastic.co/kibana/kibana:7.17.9[windealli@VM-52-29-centos ~]$ docker run -d --name kib01-test --net elastic -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://es01-test:9200" docker.elastic.co/kibana/kibana:7.17.9
Elasticsearch中的概念可以类比关系型数据库MySQL:
Elasticsearch | 关系型数据库MySQL |
---|---|
索引 | 数据库 |
映射 | 表结构 |
文档 | 记录 |
字段 | 字段/列 |
集群和节点 | 集群和节点 |
分片 | 分片 |
DSL(基于JSON) | SQL |
打开Kibana的DevTool: http://127.0.0.1:5601/app/dev_tools#/console可以进行ES的基本操作
evernotecid://7D20C308-3D50-459D-A54D-B87FB1FC2C81/appyinxiangcom/11494076/ENResource/p1053
PUT /my_index_001
写入文档使用POST
请求,
单条写入:
POST /my_index_001/_doc{ "user_id": 1001, "user_name": "张三", "company": "南山必胜客有限公司"}
批量写入:
POST /_bulk{"index": {"_index": "my_index_001"}}{"user_id": 1002, "user_name": "李四", "company": "龙岗无敌手有限公司"}{"index": {"_index": "my_index_001"}}{"user_id": 1003,"user_name": "王五", "company": "龙岗无敌手有限公司", "age": 30}
在创建索引的时候,我们并没有定义索引的mapping, ES在写文档的时候会自动帮我们创建mapping, 并且我们插入的最后一个文档比前面两个文档多了一个额age
字段。
我们看下当前的索引mapping
// 请求:GET /my_index_001/_mapping// 应答:{ "my_index_001" : { "mappings" : { "properties" : { "age" : { "type" : "long" }, "company" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } }, "user_id" : { "type" : "long" }, "user_name" : { "type" : "text", "fields" : { "keyword" : { "type" : "keyword", "ignore_above" : 256 } } } } } }}
可以看出ES帮我们自动创建并拓展了索引的mapping。
但是,由于自动创建的mapping的字段类型等可能与我们的预期不一定一直,因此在实际应用中最好还是在创建索引的时候确认好mapping。
搜索用户名为张三的文档:
POST /my_index_001/_search{ "query": { "match": { "user_name": "张三" } }}
搜索公司名包含“必胜客”的文档,(ES中,中文按字进行分词)
POST /my_index_001/_search{ "query": { "match": { "company": "必胜客" } }}
根据文档id更新文档
POST /my_index_001/_update/s3Q1poYBVgNs6Cfh3Wc9{ "doc": { "user_name": "张三update" }}
根据条件更新文档
// 将缺少age字段的文档,填充age字段,设置值为20POST /my_index_001/_update_by_query{ "query": { "bool": { "must_not": { "exists": { "field": "age" } } } }, "script": { "source": "ctx._source["age"]=20", "lang": "painless" }}
Elasticsearch 通过多节点的集群架构来保证系统的弹性拓展和高可用。
Elasticsearch 的节点按照功能角色可以分为三类:
Master节点: 只有一个,选举产生。维护整个集群的相关工作,管理集群变更。数据节点: 数据的删除、修改、查询。协调节点: 协调客户端的请求节点的分类只是逻辑上的分类,比如在我们的单节点学习环境中,Master节点、数据节点和协调节点对应的都是同一个物理节点。
在生产环境中,可以分别给Master节点和协调节点专门指定一批物理节点,因此其架构如下图所示:
Elasticsearch 通过将数据按分片进行切分,以支持分布式搜索。
Elasticsearch 在创建索引是可以指定分片数和分片的副本数
PUT /my_index_002{ "settings": { "number_of_shards": 1, "number_of_replicas": 1 }}
下图是Elasticsearch分配的示意图
集群中包含:
3个节点:node-01,node-02,node-032个索引:s_A,s_B索引s_A切分为3个分片,副本数1:主分片包括s_A1,s_A2,s_A3;副分片有s_A1’,s_A2", sA3‘;索引s_B切分为2个分片,副本数1:主分片包括s_B1,s_B2;副分片有s_B1’,s_B2"‘;文档写入时(假设向索引s_A写入文档),协调节点根据下面的公式先计算文档需要落在哪个分片:
shard=hash(routing)%number_of_primary_shards
routing代表每条文档提交时的参数,该值是可变的,用户可以自定义,在默认情况下使用的是文档的_id值;number_of_primary_shards是索引中主分片的个数。
得到分配ID:shard后,根据分配与节点的路由表,将文档数据转发给对应的节点。
与写入文档类似,获取文档同样是先计算分配ID,然后根据路由表得到对应分片(可以是主分片,也可以是副分片)的节点。
前面我们介绍Elasticsearch的基本使用时,有使用到了其搜索能力。强大搜索能力是Elasticsearch最重要的特性之一。
如果仅仅只是吧文档分片存储,在搜索时岂不是要全量扫描?其实并非如此, Elasticsearch基于Lucene和分析器两大组件来实现强大的搜索能力。
Lucene:负责进行倒排索引的物理构建,分析器:负责在建立倒排索引前和搜索前对文本进行分词和语法处理。倒排索引其实就是根据字段值来映射记录(文档)的位置。以我们前面创建的三个文档为例。
文档ID | user_id | user_name | company | age |
---|---|---|---|---|
s3Q1poYBVgNs6Cfh3Wc9 | 1001 | 张三 | 南山必胜客有限公司 | 20 |
tHQ-poYBVgNs6Cfh72fO | 1002 | 李四 | 龙岗无敌手有限公司 | 20 |
tXQ-poYBVgNs6Cfh72fO | 1003 | 王五 | 龙岗无敌手有限公司 | 30 |
Lucene针对每一个字段建立倒排索引,以user_id为例:
Key(user_id) | Value(文档ID |
---|---|
1001 | s3Q1poYBVgNs6Cfh3Wc9 |
1002 | tHQ-poYBVgNs6Cfh72fO |
1003 | tXQ-poYBVgNs6Cfh72fO |
Lucene建立倒排索引时,会对Key进行排序,这样在搜索的时候就可以进行二分查找。(写入时排序相比关系型数据库,其写入速度比较慢,因此其在事务性、实时性要求高的场景下就不太适用。
模糊搜索与分词:
在搜素的场景中,除了进行全文匹配,经常还需要进行模糊搜索。
这就需要对字段的值进行分词。 在英文中,分词可以按照单次进行,在中文中,最简单的分词就是单字了。
以company为例:
Key(user_id) | Value(company ) |
---|---|
南 | s3Q1poYBVgNs6Cfh3Wc9 |
山 | s3Q1poYBVgNs6Cfh3Wc9 |
必 | s3Q1poYBVgNs6Cfh3Wc9 |
胜 | s3Q1poYBVgNs6Cfh3Wc9 |
客 | s3Q1poYBVgNs6Cfh3Wc9 |
有 | s3Q1poYBVgNs6Cfh3Wc9,tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
限 | s3Q1poYBVgNs6Cfh3Wc9,tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
公 | s3Q1poYBVgNs6Cfh3Wc9,tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
司 | s3Q1poYBVgNs6Cfh3Wc9,tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
龙 | tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
岗 | tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
无 | tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
敌 | tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
手 | tHQ-poYBVgNs6Cfh72fO,tXQ-poYBVgNs6Cfh72fO |
搜搜索时,会对每个文档ID根据匹配程度进行打分,排序。最后按照相关性返回。
Elasticsearch 官方文档
Elasticsearch搜索引擎构建入门与实战
ChatGPT
标签:
最新推荐
Elasticsearch是分布式、可扩展、实时的搜索与数据分析引擎,一般简称ES。
3月7日,安信价值回报三年持有混合A最新单位净值为1 1434元,累计净值为1 2434元,较前一交易日下跌1...
1、结局:被上身的余文乐回到杂物科办公室,杀死四眼,然后上的照片画上血印,成是鬼杀了人后约他们到废...
索尼Xperia5II具有120Hz的显示屏,考虑到其较小的边框,因此易于操作,因此看起来确实很棒。但是,以相当高的
1、军检资格线是作为军事学院录取的首要条件所有报考的军事学院的考生必须通过军检线以后才可以进行体检...
啤酒跑不出“茅台”?啤酒“领头羊”百威亚太收入利润双降,精酿,茅台酒,百威亚太,青岛啤酒,燕京啤酒,百威英博
文献研究综述范文模板第1篇爷爷喜爱摆弄花花草草,家中阳台上全是繁花,但其中最多的还是蓝爷爷养的兰花...
1、《漂亮的李慧珍》该剧讲述了从龙套女变成完美公主的李慧珍,再遇初恋白皓宇而引发的一段曲折浪漫爱情...
在“三八”国际劳动妇女节即将到来之际,大埔县税务局组成“红利账单”派送团,为女企业家代表送上鲜花...
1、《清宫熹妃传》,作者:解语;2、《清宫宛妃传》,作者:解语;3、《凤舞九天之令妃传》,作者:米白...
1、2023年3月4日2、弘泰俱乐部合肥分部团队公益活动3、早上7:00出发,目的地是到肥西官亭回民社区,我们是在回民社
↑95后央美毕业生赵同学近日,“95后央美毕业生回老家做穿戴甲”的话题登上热搜。2022年末,中央美术学...
1、采用独立设置的蓄热室或蓄热式烧嘴,可将空气或煤气预热的加热炉。2、用于各类型加热炉,也可用于高...
王者荣耀中,有很多新手玩家不知道的隐藏机制,今天我们就来看看其中6个隐藏的机制。第一,血条的迷惑性...
大家都知道我们国家有五种疫苗,都非常安全靠谱,不仅国人接种使用,越来越多国家也开始使用我们国家的...
中证金融首次进入徐工机械前十大股东名单则可追溯至2015年三季度,截至当季度末中证金融持仓数达1 23亿...
印刷旅游合同范本第1篇甲方(旅游者):签订时间:乙方:合同编号:经甲、乙双方协商。就甲方参加由乙方...
1 打开苹果手机的设置,选择通用;2 测距仪的软件应用会出现在苹果手机的桌面上。点击软件进入;3 点...
梦幻新诛仙:新手坐骑篇---可以免费获取的坐骑汇总及全部坐骑培养优先级指南强势坐骑推荐:目前相对强势...
关闭电视机的方法如下:1、在开机状态下,按电视机的电源开关即可关闭电视机。2、在开机状态下,按电视...
1、阳春市位于广东省西南部,全市总面积4054 7平方公里。2、南北长104公里,东西宽91公里。3、地形以山...
1、《关键词》是林俊杰演唱的一首歌曲,由林怡凤填词,林俊杰谱曲,吴庆隆编曲,收录在林俊杰于2015年12...
在caughtoffside的专栏,罗马诺谈到了曼联的转会情况,他表示德容目前还不想离开巴萨。谈及德容的情况,...
△德约科维奇(资料图)综合路透社和法新社报道,赛事主办方当地时间3月5日证实,世界排名第一的塞尔维...
1、你却说花花世界不必当真是《吻得太逼真》歌手:张敬轩。《吻得太逼真》是由陈耀川填词,VincentChow...
剧版《繁花》预计9月播出今天的热度非常高,现在也是在热搜榜上了,那么具体的剧版《繁花》预计9月播出...
其实曹云金和岳云鹏并没有打架,而是在舞台上表演期间,曹云金打了岳云鹏一下,对于这次行为更多的只是...
一、网络诈骗如何要回钱网络诈骗要回钱的步骤如下:第一步肯定要带齐证据(如聊天记录、付款凭证、商品网...
据证券时报,2023年以来,国家队持仓股市场表现亮眼。根据2022年年报或上市公司持股情况公告,截至3月5...
1、使用产品的最好方法是优质胶原蛋白精华,使用仪器是光波电疗面瘫是最简单的。本文到此分享完毕,希望...
1、南宁33中是重点。2、南宁市第三十三中学位于广西壮族自治区南宁市,是一所由南宁市教育局主管的公立...
1、韩非子生于周赧王三十五年(约公元前280年),卒于秦王嬴政十四年(公元前233年),韩非为战国七雄韩...
ubeats耳机,heartbeats耳机这个很多人还不知道,现在让我们一起来看看吧!1、魔声的耳机并非音质很好的产品,
1、细胞膜功能:(1)分隔、形成细胞和细胞器,为细胞的生命活动提供相对稳定的内部环境,膜的面积大大...
什么样的人值得深交,什么样的人又不值得你深交?孔子说过这样一段话:“益者三友,损者三友。友直友谅...
1、(1)竹林隐士(2)善于爬树(3)嗜好饮水2、1竹林隐士:3、大熊猫生性孤僻,常分散独栖于茂密的竹丛...
1、俗话说:“左眼皮跳福,右眼皮跳灾。2、”,右边上眼皮跳代表有喜事,可能是女性长辈或长官带来的,...
1、1、在手机下方有usb插孔只要通上电源就是自动开启的,无需自动开启;如果是需要开通连接电脑的usb功...
如何做好原神徐伯伦的嗟叹任务?原神徐伯龙哀歌任务完成简介1 任务触发条件:(1)完成前置任务“白夜国...
1、今年小年夜是1月17号。2、小年,中国传统节日,即传统的祀灶日。小年期间主要的民俗活动有扫尘、祭灶...
1、上古八大姓指的是姜、姬、姚、嬴、姒、妘、妫、姞,源于母系社会,同一个姓表示同一个母系的血缘关系...
1、您好,知我药妆肌肤顾问很高兴帮助您。2、您好,知我药妆肌肤顾问很高兴帮助您。3、很多mm本身是油性...
1、(诸葛亮)大摆空城计——化险为夷。2、空城计事由:《三国演义》中写,魏国派司马懿挂帅进攻蜀国街亭...
开智君说你是否有过这样的感受,工作占据了自己的大部分时间,却无法从中感受到意义,对未来也充满焦虑...
该游戏前期并没有很考验生存的BOSS怪物,而练级场所出没的怪物多半是高攻低敏,后期要登雪上去面对喜好...
今天小编岚岚来为大家解答以上的问题。自考学位证作用大吗,自考学位证有什么用相信很多小伙伴还不知道,...
1、aloha是夏威夷语,指爱慕、恋慕、同情、怜悯、再见、你好等类似的意思。2、在夏威夷被特别用来作
1000亿元20多个项目!鄂尔多斯市国投集团与农发行内蒙古分行签约!
1、1970年5月5日是公历日期。文章到此就分享结束,希望对大家有所帮助。
2022下半年内蒙古教资面试成绩在哪里查询查询时间:点击查看查询官网1 中国教育考试网2 中国教育考试...
成都抗疫的外籍志愿者:愿为城市“康复”贡献力量
百倍市盈率仍被热捧!安徽连锁药店华人健康上市飙涨 56%,过半打新者走人
2023年北京地区毕业生就业服务月活动启动,逾10万优质岗位等你来
浪潮软件(600756)2月28日主力资金净买入2335.15万元
before什么意思中文意思是什么_beforever是什么意思_每日简讯
天天最资讯丨电讯报:切尔西老板看到合同低于2年的球员就准备出售,多人或离队
派发花卉种子3200包 园洲开展“增绿添美”种花活动_每日关注
要闻速递:罗纳尔多:贝利证明了黑人可以更成功,可以战胜种族主义
【热闻】热榜!梅西第7次荣膺世界足球先生!梅西获奖感言:这一年实在太疯狂,我实现了梦想
微叠层TiBw-TiAl复合材料板材设计制备与强韧化机理研究
企业如何借助纸杯投放营销广告_企业如何借助纸杯投放营销广告案例
观热点:锐奇股份:2022年度净利润约393万元,同比下降61.53%
全球百事通!文艺相伴 志愿同行,暖心服务走进宁波奉化山区村庄
中电控股(00002.HK)发布年度业绩,股东应占盈利9.24亿港元 同比减少89.12% 第四期中期股息每股1.21港元 今日热搜
新股公告 | 数字货运平台维天运通(02482)今起招股,预计于3月9日上市_环球微动态
一模一样!热刺战蓝军首发与2-0西汉姆首发相同,孙兴慜连场替补
Copyright © 2015-2022 华南律师网版权所有 备案号:粤ICP备18025786号-52 联系邮箱: 954 29 18 82 @qq.com