Elasticsearch入门

一、学习背景

曾经,如果我们在网页上查新某些数据,在输入框中输入部分内容,后台默认可能是通过SQL的模糊查询进行操作的。

但是在现今的大数据时代,有几百万条数据,那么常规的模糊查询就非常的缓慢了,慢慢的演进出了索引,但是还是达不到大数据的要求。

那么,就有必要学习一款分布式全文搜索引擎。那么ElasticSearch主要功能就是搜索,如果在某个网站上需要用到搜索功能基本上都是用的ElasticSearch。

二、ES的起源

首先需要了解Lucene,是一套信息检索工具包,就是一个jar包,但是不包含搜索引擎。它里面有一些索引结构(相当于数据库中的表)、读写索引的工具、排序、搜索规则等等工具类。

那么我们的ES就是基于Lucene工具包做了一些增强和封装,上手十分简单!!!

三、ES概述

ES是一个开源的高扩展的分布式全文搜索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RestFul API 来隐藏Lucene的复杂性,从而让全文搜索变得简单。

现今,ES已经是全世界排名第一的搜索引擎类应用!!!

四、倒排索引

将存放的数据,以一定的方式进行分词,并且将分词的内容存放到一个单独的分词库中。当用户去查询数据时,会将用户查询关键字进行分词,然后去分词库中匹配内容,最终得到数据的id标识,根据id标识去存放数据的位置拉取到指定的数据。

画图画工具:https://www.processon.com/

五、环境准备

ElasticSearch是使用Java开发的,且7.8版本的ES需要JDK版本1.8以上,默认安装包带有jdk环境,如果系统配置JAVA_HOME,那么使用系统默认的JDK,如果没有配置使用自带的JDK,一般建议使用系统配置的JDK。

怎么使用Elasticsearch自带的jdk呢?

我们看一下下载之后的Elasticsearch包下bin目录下的elasticsearch-env.bat文件

JAVA_HOME是我们配置的jdk的环境变量,假如我们配置了ES_JAVA_HOME就会优先使用我们下载的Elasticsearch自带的jdk。

六、下载Elasticsearch

6.1:Elasticsearch:下载:

下载地址:https://www.elastic.co/downloads/past-releases/elasticsearch-7-13-4

JDK兼容查看:https://www.elastic.co/cn/support/matrix#matrix_jvm

下载之后是一个压缩包,只需要解压即可

解压后的目录:

bin目录下有启动类

启动后在浏览器输入:http://localhost:9200

6.2:安装ElasticSearch-head插件

Elasticsearch-head是一个轻量级的Elasticsearch管理工具,主要用于集群的可视化管理。其主要功能包括:

实时监控集群健康状态:Elasticsearch-head可以实时显示集群的健康状况,包括节点的状态、分片分布等信息,帮助用户了解集群的整体运行情况。

可视化展示节点和分片分布:通过图像化的方式展示集群中的节点和分片分布情况,使用户能够直观地了解数据地存储和分布情况。

索引管理和数据浏览:用户可以直接在Elasticsearch-head中管理索引,浏览数据,而无需通过其他工具或命令行操作。

执行REST API命令:Elasticsearch-head提供了一个接口,允许用户通过选择和输入方式执行REST API命令,简化了API的使用过程。

跨域访问配置:为了在Elasticsearch中正常使用Elasticsearch-head,需要配置Elasticsearch的跨域访问设置,允许从不同的域名或端口访问Elasticsearch服务。

此外,Elasticsearch-head相比Kibana,具有更轻量的特点,适合快速部署和日常运维使用。

下载安装:

1:使用NPM安装

2:安装grunt Grunt 是基于 Node.js 的前端自动化工具

CMD中执行 npm install -g grunt-cli

输入:grunt -version 命令检查是否安装成功

3:Head插件下载

方法一:https://gitcode.com/gh_mirrors/el/elasticsearch-head?utm_source=csdn_github_accelerator,直接去github镜像地址下载压缩包

方法二:

下载地址:https://github.com/mobz/elasticsearch-head,该地址需要在git下载

创建一个文件夹,ElasticSearchhead,进入到该文件夹下

在该文件夹下,右键,找到 git bash here

下载完成之后,打开elasticsearch-head文件夹,修改Gruntfile.js文件,添加hostname*,详情如下:

在elasticsearch-head文件下,上方的地址栏输入cmd,回车打开命令窗口

如下图:

打开后:

执行cnpm install 安装依赖

下方是启动地址打开之后效果如下:

上图中集群健康值:未连接,这个有个跨域问题

这里我们需要在Elasticsearch下找到下图文件,然后在里面添加以下两行

复制代码
http.cors.enabled: true
http.cors.allow-origin: "*"

添加后重启Elasticsearch服务

再次链接

七、了解ELK

7.1:ELK

ELK是ElasticsearchLogstashKibana 三大开源框架首字母大写简称。市面上也被称为Elastic Stack,其中Elasticsearch 是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候,我们简Elasticsearch为es;Logstash 是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过波后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等);Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性,并非唯一性。

7.2:安装Kibana

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据,使用Kibana可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表盘(dashboard)实时显示Elasticsearch查询动态,设置Kibana非常简单,无需编码或者额外的基础框架,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。

官网下载地址:https://www.elastic.co/downloads/past-releases#kibana

跟之前es对应的版本地址:https://www.elastic.co/downloads/past-releases/kibana-7-13-4

需要注意:Kibana的版本需要跟我们前面下载的Elasticsearch版本保持一致,比如Elasticsearch是7.xx版本,Kibana也需要是7.xx版本。

下载完成之后,解压即可 解压后启动服务

如果双击没有反应使用命令行启动服务,在上图的地址栏输入cmd,进入命令窗口kibana.bat

启动成功之后,在浏览器输入:http://localhost:5601

八、索引操作

8.1:创建索引

对比于关系型数据库,创建索引就相当于创建数据库。

在psotman或者apifox中,向ES服务器,发送put请求,比如:http://localhost:9200/shopping

注意,这里要使用put请求

查看运行结果:

8.2:查询索引

查询单个索引:

假如我们查询我们刚刚创建的shopping索引,我们只需要将我们的请求,从put改为get即可,如下图:

查看所有索引,这里是使用的固定的写法,请求方式还是get,请求路径如下http://localhost:9200/_cat/indices?v

8.3:删除索引

删除索引和单个查询,以及新增是一样的,只不过我们的请求方式要改为delete,如下图

8.4:创建文档

在创建文档时,使用的请求为post请求,请求路径为

自定义id,在上图中,创建文档之后生成了一个id,这个id很长,我们给他自定义一个好记的id,请求路径 http://localhost:9200/shopping/_doc/10086

8.5:根据主键查询

在上图中,我们在返回值中,看到id为10086,那么我们根据这个id去查询看看返回结果,使用的请求方式为get

8.6:查询所有

8.7:全量修改,局部修改

1:全量修改

2:局部修改

8.8:条件查询,分页查询

1:条件查询,在请求路径中添加参数

2:条件查询,在请求体中添加查询参数

3:条件查询,查询所有

4:分页查询

5:分页查询,指定返回结果

8.9:多条件查询,范围查询

1:多条件查询,多个条件同时符合

query:表示查询条件

bool:表示条件

must:表示多个条件同时成立

match:表示匹配的条件

2:多条件查询,或查询

should:表示或

3:范围查询

filter:表示过滤

range:表示范围

gt:相当于大于号,lt表示小于号,ge表示大于等于,le表示小于等于

8.10:完全匹配,高亮查询

1:完全匹配

match_phrase:完全匹配

2:高亮查询

highlight:高亮

fields:表示对某个字段

8.11:聚合查询

1:分组查询

aggs:聚合操作

price_group:这个是自己分组起的名字,名字自定义

term:分组

field:分组字段

添加"size:0"隐藏原始字段

2:求平均值

九、映射关系

1:先创建一个user索引

2:创建映射条件

3:创建测试的user文档

4:验证映射条件

相关推荐
Coder个人博客13 小时前
Linux6.19-ARM64 mm mmu子模块深入分析
大数据·linux·车载系统·系统架构·系统安全·鸿蒙系统
财经三剑客17 小时前
AI元年,春节出行安全有了更好的答案
大数据·人工智能·安全
岁岁种桃花儿17 小时前
Flink CDC从入门到上天系列第一篇:Flink CDC简易应用
大数据·架构·flink
TOPGUS18 小时前
谷歌SEO第三季度点击率趋势:榜首统治力的衰退与流量的去中心化趋势
大数据·人工智能·搜索引擎·去中心化·区块链·seo·数字营销
2501_9336707919 小时前
2026 高职大数据与会计专业零基础能考的证书有哪些?
大数据
ClouderaHadoop19 小时前
CDH集群机房搬迁方案
大数据·hadoop·cloudera·cdh
TTBIGDATA19 小时前
【Atlas】Ambari 中 开启 Kerberos + Ranger 后 Atlas Hook 无权限访问 Kafka Topic:ATLAS_HOOK
大数据·kafka·ambari·linq·ranger·knox·bigtop
程序员清洒19 小时前
CANN模型部署:从云端到端侧的全场景推理优化实战
大数据·人工智能
lili-felicity20 小时前
CANN多设备协同推理:从单机到集群的扩展之道
大数据·人工智能
pearbing21 小时前
天猫UV量提高实用指南:找准方向,稳步突破流量瓶颈
大数据·uv·天猫uv量提高·天猫uv量·uv量提高·天猫提高uv量