没错,你离分布式搜索只差一个Elasticsearch入门!

来源 | 沉默王二

责编 | Carol

封图 | CSDN 付费下载自视觉中国

学习真的是一件令人开心的事情,上次分享了Redis 入门的文章后,收到了很多小伙伴的鼓励,比如说:“哎呀,不错呀,通俗易懂,十分钟真的入门了”。瞅瞅,瞅瞅,我决定再接再厉,入门一下 Elasticsearch,因为我们公司的商城系统升级了,需要用 Elasticsearch 做商品的搜索。

不过,我首先要声明一点,我对 Elasticsearch 并没有进行很深入的研究,仅仅是因为要用,就学一下。但作为一名负责任的技术博主,我是用心的,为此还特意在某某时间上买了一门视频课程,作者叫阮一鸣。说实话,他光秃秃的头顶让我对这门课程产生了浓厚的兴趣。

Elasticsearch 是什么

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。

以上引用来自于官方,不得不说,解释得蛮文艺的。意料之中和意料之外,这两个词让我想起来了某一年的高考作文题(情理之中和意料之外)。

Elastic Stack 又是什么呢?整个架构图如下图(来源于网络,侵删)所示。

信息量比较多,对吧?那就记住一句话吧,Elasticsearch 是 Elastic Stack 的核心。

国内外的很多知名公司都在用 Elasticsearch,比如说滴滴、骨骼、微软等等。Elasticsearch 有很多强大的功能,比如说全文搜索、购物推荐、附近定位推荐等等。

理论方面的内容就不说太多了,我怕小伙伴们会感到枯燥。毕竟入门嘛,实战才重要。

安装 Elasticsearch

Elasticsearch 是由 Java 开发的,所以早期的版本需要先在电脑上安装 JDK 进行支持。后来的版本中内置了 Java 环境,所以直接下载就行了。Elasticsearch 针对不同的操作系统有不同的安装包,我们这篇入门的文章就以 Windows 为例吧。

下载地址如下:

https://www.elastic.co/cn/downloads/elasticsearch

最新的版本是 7.6.2,280M 左右。但我硬生生花了 10 分钟的时间才下载完毕,不知道是不是连通的 200M 带宽不给力,还是官网本身下载的速度就慢,反正我去洗了 6 颗葡萄吃完后还没下载完。

Elasticsearch 是免安装的,只需要把 zip 包解压就可以了。

1)bin 目录下是一些脚本文件,包括 Elasticsearch 的启动执行文件。

2)config 目录下是一些配置文件。

3)jdk 目录下是内置的 Java 运行环境。

4)lib 目录下是一些 Java 类库文件。

5)logs 目录下会生成一些日志文件。

6)modules 目录下是一些 Elasticsearch 的模块。

7)plugins 目录下可以放一些 Elasticsearch 的插件。

直接双击 bin 目录下的 elasticsearch.bat 文件就可以启动 Elasticsearch 服务了。

输出的日志信息有点多,不用细看,注意看到有“started”的字样就表明启动成功了。为了进一步确认 Elasticsearch 有没有启动成功,可以在浏览器的地址栏里输入 http://localhost:9200 进行查看(9200 是 Elasticsearch 的默认端口号)。

你看,为了 Search。

那如何停止服务呢?可以直接按下 Ctrl+C 组合键——粗暴、壁咚。

安装 Kibana

通过 Kibana,我们可以对 Elasticsearch 服务进行可视化操作,就像在 Linux 操作系统下安装一个图形化界面一样。

下载地址如下:

https://www.elastic.co/cn/downloads/kibana

最新的版本是 7.6.2,284M 左右,体积和 Elasticsearch 差不多。选择下载 Windows 版,zip 格式的,完成后直接解压就行了。下载的过程中又去洗了 6 颗葡萄吃,狗头。

包目录不再一一解释了,进入 bin 目录下,双击运行 kibana.bat 文件,启动 Kibana 服务。整个过程比 Elasticsearch 要慢一些,当看到 [Kibana][http] http server running 的信息后,说明服务启动成功了。

在浏览器地址栏输入 http://localhost:5601 查看 Kibana 的图形化界面。

由于当前的 Elasticsearch 服务端中还没有任何数据,所以我们可以选择「Try Our Sample Data」导入 Kibana 提供的模拟数据体验一下。下图是导入电商数据库的看板页面,是不是很丰富?

打开 Dev Tools 面板,可以看到一个简单的 DSL 查询语句(一种完全基于 JSON 的特定于领域的语言),点击「运行」按钮后就可以看到 JSON 格式的数据了。

Elasticsearch 的关键概念

在进行下一步之前,需要先来理解 Elasticsearch 中的几个关键概念,比如说什么是索引,什么是类型,什么是文档等等。Elasticsearch 既然是一个数据引擎,它里面的一些概念就和 MySQL 有一定的关系。

看完上面这幅图(来源于网络,侵删),是不是瞬间就清晰了。向 Elasticsearch 中存储数据,其实就是向 Elasticsearch 中的 index 下面的 type 中存储 JSON 类型的数据。

在 Java 中使用 Elasticsearch

有些小伙伴可能会问,“二哥,我是一名 Java 程序员,我该如何在 Java 中使用 Elasticsearch 呢?”这个问题问得好,这就来,这就来。

Elasticsearch 既然内置了 Java 运行环境,自然就提供了一系列 API 供我们操作。

第一步,在项目中添加 Elasticsearch 客户端依赖:

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.6.2</version>
</dependency>

第二步,新建测试类 ElasticsearchTest:

public class ElasticsearchTest {public static void main(String[] args) throws IOException {RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));IndexRequest indexRequest = new IndexRequest("writer").id("1").source("name", "沉默王二","age", 18,"memo", "一枚有趣的程序员");IndexResponse indexResponse = client.index(indexRequest, RequestOptions.DEFAULT);GetRequest getRequest = new GetRequest("writer", "1");GetResponse getResponse = client.get(getRequest, RequestOptions.DEFAULT);String sourceAsString = getResponse.getSourceAsString();System.out.println(sourceAsString);client.close();}
}

1)RestHighLevelClient 为 Elasticsearch 提供的 REST 客户端,可以通过 HTTP 的形式连接到 Elasticsearch 服务器,参数为主机名和端口号。

有了 RestHighLevelClient 客户端,我们就可以向 Elasticsearch 服务器端发送请求并获取响应。

2)IndexRequest 用于向 Elasticsearch 服务器端添加一个索引,参数为索引关键字,比如说“writer”,还可以指定 id。通过 source 的方式可以向当前索引中添加文档数据源(键值对的形式)。

有了 IndexRequest 对象后,可以调用客户端的 index() 方法向 Elasticsearch 服务器添加索引。

3)GetRequest 用于向 Elasticsearch 服务器端发送一个 get 请求,参数为索引关键字,以及 id。

有了 GetRequest 对象后,可以调用客户端的 get() 方法向 Elasticsearch 服务器获取索引。getSourceAsString() 用于从响应中获取文档数据源(JSON 字符串的形式)。

好了,来看一下程序的输出结果:

{"name":"沉默王二","age":18,"memo":"一枚有趣的程序员"}

完全符合我们的预期,perfect!

也可以通过 Kibana 的 Dev Tools 面板查看“writer”索引,结果如下图所示。

好了,我亲爱的小伙伴们,以上就是本文的全部内容了,是不是看完后很想实操一把 Elasticsearch,赶快行动吧!如果你在学习的过程中遇到了问题,欢迎随时和我交流,虽然我也是个菜鸟,但我有热情啊。

另外,如果小伙伴想写入门级别的文章,这篇就是最好的范例。

推荐阅读
  • 实操来了!一文告诉你如何用 Streamlit 和 Heroku 开发 Web

  • 避坑!使用 Kubernetes 最易犯的 10 个错误

  • 雷军:4G 手机已清仓,全力转 5G;QQ音乐播放中途插语音广告引热议;Wine 5.9 发布 | 极客头条

  • 15 岁黑进系统,发挑衅邮件意外获 Offer,不惑之年捐出全部财产,Twitter CEO 太牛了!

  • 必读!53个Python经典面试题详解

  • 赠书 | 1月以来 Tether 增发47亿 USDT,美元都去哪儿了?

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517778.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蚂蚁金服总裁胡晓明:科技如何驱动金融从离线走向在线

今天&#xff0c;2019阿里云栖大会在杭州云栖小镇开幕。蚂蚁金服的展区吸引到不少关注金融创新的“同道中人”。 除了亲身体验蚂蚁金服在金融科技领域的创新技术&#xff0c;蚂蚁金服集团总裁胡晓明特别在主论坛发表题为《数字经济时代的金融科技》的主题演讲&#xff0c;分享数…

1万亿次、10亿人、10亿张,科技给生活带来多少改变?

云栖大会精彩进行中&#xff0c;今天&#xff0c;是 Day-2。 一早&#xff0c;阿里技术明星团闪亮登场&#xff01; 贾扬清&#xff1a;阿里巴巴副总裁、阿里云智能计算平台事业部总经理、高级研究员 李飞飞&#xff1a;阿里巴巴副总裁、阿里云智能数据库产品事业部总经理、高级…

“编程能力差,90%输在了数学上!”CTO:其实你们都是瞎努力!

01从未得到过重视的问题一流程序员学数学&#xff0c;二流程序员学算法&#xff0c;低端看高端就是黑魔法。可能有人以为这就是个段子&#xff0c;但有过工作经验的都知道&#xff0c;这其实就是程序员的真实写照&#xff01;想一想&#xff0c;我们学习、求职、工作的场景中&a…

云原生时代|分布式系统设计知识图谱(内含22个知识点)

我们身处于一个充斥着分布式系统解决方案的计算机时代&#xff0c;无论是支付宝、微信这样顶级流量产品、还是区块链、IOT等热门概念、抑或如火如荼的容器生态技术如Kubernetes&#xff0c;其背后的技术架构核心都离不开分布式系统。 为什么要懂分布式架构 系统学习分布式架构…

mysq启动失败

文章目录一、一站式解决1. 问题分析定位二、特殊场景2.1. 问题分析定位2.2. 解决方案2.3. 解决方案2一、一站式解决 1. 问题分析定位 # 找到MySQL的配置文件&#xff0c;复制mysql的数据目录 vim /etc/my.cnf# 进入msyql的数据目录 cd /data/mysql# 查看日志文件 vim mysql.e…

藏不住了,这就是阿里 AI 的真正实力!

不好意思&#xff0c;我要放大招了&#xff01; 在今天的杭州云栖大会上&#xff0c;阿里巴巴首次公布人工智能调用规模&#xff1a; 每天调用超 1万亿 次 服务全球 10亿 人 日处理图像 10亿 张 视频 120万 小时 语音 55万 小时 自然语言 5千亿 句 在AI芯片、AI云服务、AI算…

Error和Exception(异常)

Error和Exception&#xff08;异常&#xff09; 掌握以下三种类型的异常&#xff1a;检查性异常&#xff1a;最具代表的检查性异常是用户错误或问题引起的异常&#xff0c;这是程序员无法预见的。例如打开一个不存在文件时&#xff0c;一个异常就发生了&#xff0c;这些异常在…

Kubernetes 是如何调度的?

作者 | 阿文&#xff0c;责编 | 郭芮头图 | CSDN 下载自东方IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;自互联网出现以来 &#xff0c;云计算的概念已经提出了有 50 年。从1957 年&#xff0c;John McCarthy 将计算机中的分时共享概念设计成了一种工具。从此…

# Schedulerx正式登陆Ali-k8s应用目录

简介 分布式任务调度 SchedulerX 是阿里巴巴基于 Akka 架构自研的的分布式任务调度平台&#xff0c;今天正式登陆阿里云容器服务Kubernetes应用目录&#xff0c;支持用户以云原生的方式获取定时、工作流任务编排、分布式批量调度等功能&#xff0c;同时具有高可靠、海量任务、…

刚刚,阿里巴巴小程序生态联盟重磅启动

9月27日下午&#xff0c;阿里巴巴小程序繁星计划峰会作为杭州云栖大会的压轴好戏&#xff0c;在云栖小镇国际会展中心迎来千余位商家、合作伙伴、个人开发者和行业专家。峰会以“小程序、大生态”为题&#xff0c;发布了阿里巴巴小程序繁星计划补贴的更多细节方案&#xff0c;并…

因为一个跨域请求,我差点丢了饭碗

来源 | 编程技术宇宙责编 | 王晓曼封图 | CSDN下载自视觉中国浏览器基本原理我叫小风&#xff0c;是Windows帝国一个普通的上班族。今天&#xff0c;我入职了一家浏览器公司&#xff0c;公司的主营业务是为人类提供Internet上网服务&#xff0c;我的岗位是负责执行JavaScript代…

MongoDB BI Connector 实战指南

MongoDB 使用 BI Connector 来支持 BI 组件直接使用 SQL 或 ODBC 数据源方式直接访问 MongoDB&#xff0c;在早期 MongoDB 直接使用 Postgresql FDW 来实现 SQL 到 MQL 的转换&#xff0c;后来实现更加轻量级的 mongosqld 来支持 BI 工具的连接。 安装 BI Connector 参考 Inst…

基于Topic消息路由的M2M设备间通信Node JS SDK 示例

概述 M2M&#xff08;即Machine-to-Machine&#xff09;是一种端对端通信技术。本章节以Node JS SDK为例&#xff0c;使用基于Topic消息路由的M2M设备间通信&#xff0c;主要介绍如何基于物联网平台构建一个M2M设备间通信架构。 实验步骤 第一部分&#xff1a;配置相关 1、产品…

8 种架构设计模式优缺点大曝光 | 原力计划

作者 | 程序员Tony责编 | 王晓曼出品 | CSDN博客什么是架构我想这个问题&#xff0c;十个人回答得有十一个答案&#xff0c;因为另外的那一个是大家妥协的结果&#xff0c;哈哈&#xff0c;我理解&#xff0c;架构就是骨架。人类的身体的支撑是主要由骨架来承担的&#xff0c;然…

企业实战_06_MyCat 常用的分片算法

接上一篇&#xff1a;企业实战_05_MyCat用户密码加密 https://gblfy.blog.csdn.net/article/details/100056536 下一篇&#xff1a;企业实战_07_MyCat 搭建Mysql 一主一从复制环境 https://gblfy.blog.csdn.net/article/details/118640210

数据库OceanBase创始人阳振坤:通关TPC-C到底有多难?

自从蚂蚁金服自研数据库OceanBase获得TPC-C测试第一名后&#xff0c;引起了行业内外大量关注&#xff0c;我们衷心的感谢大家对OceanBase的支持与厚爱&#xff0c;也虚心听取外界的意见和建议。为了让大家更好的了解测试的技术细节&#xff0c;我们特意邀请了OceanBase的核心研…

为啥程序员下班后只关显示器从不关电脑?

你下班时是不是只将显示器一关&#xff0c;揣上手机就走了&#xff1f;曾有安保人员晚上来办公室巡查时问&#xff0c;为什么这些人不关机就下班呢&#xff1f;因为等一切工具准备就绪后&#xff0c;半个小时已经过去了。你知道程序员的时薪有多贵吗&#xff1f;效率多高吗&…

从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?

阿里妹导读&#xff1a;从十余年前的各种分布式系统研发到现在的容器云&#xff0c;从支撑原有业务到孵化各个新业务&#xff0c;企业的发展离不开统一的、与时俱进的技术架构。本篇文章从企业分布式应用架构层面介绍了云原生计算架构带来的变化&#xff0c;希望能够帮助更多企…

那些年,我们见过的 Java 服务端“问题”

导读 明代著名的心学集大成者王阳明先生在《传习录》中有云&#xff1a; 道无精粗&#xff0c;人之所见有精粗。如这一间房&#xff0c;人初进来&#xff0c;只见一个大规模如此。处久&#xff0c;便柱壁之类&#xff0c;一一看得明白。再久&#xff0c;如柱上有些文藻&#x…

中兴通讯uSmart云电脑,开启安全办公新时代

2020年春天&#xff0c;以5G、人工智能、云计算为代表的“新基建”蔚然成风&#xff0c;着眼国家数字经济体系建设&#xff0c;打造数字经济体系底座的“新基建”&#xff0c;无疑成为中国经济整体应对未来发展的核心方案。可以说&#xff0c;没有任何一个时期比现在更能够彰显…