ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

开始步入Elasticsearch的世界:初探elasticsearch

2021-08-27 20:01:27  阅读:175  来源: 互联网

标签:请求 elasticsearch 初探 Elasticsearch 我们 es 9200


前言

最近我参与了一个重构项目,由于这个下项目并发量比较大,而且经常出现MQ丢数据的问题,所以工单特别多,为了解决这个历史遗留问题,我们开启了为期两个月的重构之旅。

目前,这个项目刚刚启动,现在的核心架构,主要依托于redis,总的来说就是,所有的数据交互均依托于redis,不管是新增、查询、更新、删除等,都在redis上操作,然后通过一个DAL组件完成数据库数据同步。就是这样的架构,让我们在开发的时候简直要抓狂了,为了一个在数据库层面带索引的查询,我们需要从redis中拿出所有数据,然后从list中拿出我们需要的数据,感觉操作太复杂了,但是没办法呀,架构师就是这么定的。

因为后期要把redis换成ES,所以我就提前把相关内容学起来,以备不时之需。

elasticsearch

简介

elasticsearch是什么?根据它的字面意思,我们知道它和搜索有关,官方给出的解释是:

Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是一套适用于数据采集、扩充、存储、分析和可视化的免费开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 ElasticsearchLogstash Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。

简单来说,elasticsearch可以用以下几个关键字概括:

  • 分布式
  • 开源
  • 搜索和分析引擎

做后端开发的小伙伴应该都清楚,在我们所有的系统中,基本上都是读多写少,所以真正制约一个系统性能是查询,是搜索,如果有一款组件可以解决数据搜索的问题,那系统的性能肯定会得到飞速提升,而elasticsearch就是这样一款组件。现阶段,很多企业都在用es,目前被提及最多的是携程,携程是大规模在使用,单日索引数据条数600亿,这就有点强了。

好了,关于简介就先到这里,更多信息各位小伙伴可以自己检索,下面我们看下如何安装使用es

下载

访问官方网站,选择对应版本,然后下载。官方地址如下:

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

这里我直接选择windows,各位小伙伴根据自己的操作系统进行选择。

安装

下载过程还是很快的,下载完成后直接解压压缩文件即可:

下面我们简单介绍下,elasticsearch的文件结构:

  • bin:存放可执行文件,包括脚本等,一般我们用的第三方组件都是这样的结构,比如zknacos

  • configelasticsearch的配置文件

  • jdk:这个各位小伙伴应该很熟悉,目前elasticsearch-7.14.0下的jdk版本比较高是16.0.1

  • ``libelasticsearch本身应该是基于java开发的,所以lib就是elasticsearch`要用到的包,其中也包括它自身应用的包

  • logs:存放运行日志,目前是空的

  • modules:这个应该是elasticsearch可以扩展的模块,默认情况下好多模块是不启用的

  • plugins:这个应该是存放第三方扩展组件的,目前该文件夹是空的。

好了,elasticsearch的目录结构我们暂时就说这么多,下面看下如何启动elasticsearch

启动

启动elasticsearch也很简单,只需要执行bin文件夹下的脚本即可:

elasticsearch.bat

如果启动报错,检查下本地jdk版本,最好选择16及以上版本,因为我本地安装的就是16,所以启动没有报错,但是在控制台有如下提示:

按照提示信息,elasticsearchJAVA_HOME需要设置未ES_JAVA_HOMEJAVA_HOME不推荐使用,应该是怕和jdk冲突吧。

从启动日志我们看出以下几点:

  • 启动的时候会加载modules的文件,具体各个模块的用途,我们暂时先不研究

  • elasticsearch服务默认情况下会用到93009200,其中9300的端口协议未知,但是肯定不是http协议,9200是可以直接访问的:

  • 访问127.0.0.1:9200,如果返回值结果如上,则表明elasticsearch启动成功。

测试

安装启动完成后,127.0.0.1:9200访问也ok,说明es已经部署ok,下面我们对它进行一些简单测试。

在前面的简介中,我们知道es对外提供了 REST 风格 API,所以我们下面的测试都是基于REST接口进行的,为了方便我们后面就直接用curl工具( 或者你也可以用postman)进行操作了。

REST

下面是rest协议的几种常用请求类别以及他们表示的含义,我们对es的操作也就是基于他们进行的:

  • PUT请求:表示更新
  • POST请求:表示写
  • DELETE请求:表示删除
  • GET请求:表示查询
  • HEAD请求:与GET类似,但是不返回消息体
  • OPTIONS请求:获取服务器支持的HTTP请求方法
  • TRACE请求:用来调试web服务器连接的HTTP方式
  • CONNECT 请求:把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户

关于Rest协议我们暂时先说这么多,明天我们再详细说明。

以上这些请求中,es只支持GET, PUT, DELETE, HEAD,其他的是不支持的:

创建索引
curl -X PUT 127.0.0.1:9200/syske

返回结果:

{
    "acknowledged":true,
    "shards_acknowledged":true,
    "index":"syske"
}
访问索引
curl -X GET 127.0.0.1:9200/syske

返回结果:

  {
	"syske": {
		"aliases": {},
		"mappings": {},
		"settings": {
			"index": {
				"routing": {
					"allocation": {
						"include": {
							"_tier_preference": "data_content"
						}
					}
				},
				"number_of_shards": "1",
				"provided_name": "syske",
				"creation_date": "1629869376742",
				"number_of_replicas": "1",
				"uuid": "cFI0E1VxQrKyxNiH1qZBfA",
				"version": {
					"created": "7140099"
				}
			}
		}
	}
}
删除索引
curl -X DELETE 127.0.0.1:9200/syske

返回结果

{
    "acknowledged":true
}

说明:索引就类似于我们传统数据库中的库,一个索引就对应一个数据库。

总结

今天我们主要分享了es的下载、安装和测试,整体内容很简单,也不需要任何复杂的配置,只要确保es可以在本地正常启动即可。好了,es的简单入门我们今天就先到这里,我们从明天开始学习es的其他基本术语和用法。

标签:请求,elasticsearch,初探,Elasticsearch,我们,es,9200
来源: https://www.cnblogs.com/caoleiCoding/p/15195094.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有