Elasticsearch

一、为什么要用Elasticsearch

我们的应用经常需要添加检索功能,开源的Elasticsearch是目前全文检索引擎的首选。它可以快速的存储、搜索和分析海量数据。Elasticsearch是一个分布式搜索框架,提供RestfulAPI,底层基于Lucene,采用多shard(分片)的方式保证数据安全,并且提供自动resharding的功能。 

二、Elasticsearch的介绍

The Elastic Stack,包括 Elasticsearch、Kibana、Beats和 Logstash (也称为ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elaticsearch简称为ES,ES是一个开源的高扩展的分布式全文搜索引擎,是整个ElasticStack技术栈的核心。它可以近乎实时的存储、检索数据,本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

三、安装Elasticsearch

第一步:在Docker Hub中选择最新版本的elasticsearch镜像,如下图所示:

使用下述命令下载最新版本的elasticsearch镜像: 

docker pull elasticsearch:8.5.1

第二步:使用下述命令单节点启动Elasticsearch服务:

docker run --name elasticsearch -d \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:8.5.1

参数说明

-e "discovery.type=single-node":表示以单节点启动Elasticsearch服务

-e ES_JAVA_OPTS="-Xms512m -Xmx512m":Xms表示设置堆内存的初始大小,Xmx表示设置堆内存的最大大小

-p 9200:9200:表示ES节点与外部通讯使用的端口,它是http协议的RESTful接口(各种CRUD操作都是走的该端口,如查询:http://localhost:9200/user/_search)。

-p 9300:9300:表示ES节点之间通讯使用的端口,它是tcp通讯端口,集群间和TCP client都走的它。

第三步:Elasticsearch服务启动以后,如果直接在宿主机中使用 curl 127.0.0.1:9200 命令去访问Elasticsearch服务的话,则会报下述提示:

我们可以通过Portainer先找到Elasticsearch容器内配置文件的绝对路径为:

/usr/share/elasticsearch/config

使用docker cp命令将容器内的/usr/share/elasticsearch路径下的config目录拷贝到宿主机的/home/elasticsearch目录下: 

docker cp elasticsearch:/usr/share/elasticsearch/config /home/elasticsearch

此时我们就可以看见容器内的config目录已经完整拷贝进了宿主机的/home/elasticsearch目录下。 

第四步:停止并删除已创建容器

docker stop elasticsearch
docker rm elasticsearch

第五步:将/home/elasticsearch/config目录下的elasticsearch.yml文件中的xpack.security.enable配置项的值设置为false

第六步: 将宿主机的配置文件夹挂载到容器内,再次启动Elasticsearch容器

docker run --name elasticsearch -d \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-p 9200:9200 \
-p 9300:9300 \
-v /home/elasticsearch/config:/usr/share/elasticsearch/config \
elasticsearch:8.5.1

这里稍微提示一下哈,Elasticsearch服务的启动没有那么快,需要稍微等一会。

浏览器中访问192.168.1.108:9200,其返回内容如下所示,这里包含了Elasticsearch的版本信息:

此时说明Elasticsearch服务已经安装成功了!!!

四、数据格式

Elasticsearch是面向文档型的NoSQL数据库,一条数据在这里就是一个文档。为了方便理解,我们将Elasticsearch里存储文档数据和关系型数据库MySQL存储数据的概念进行一个类比。

ES里的Index可以看做一个库,而Types相当于表,Documents则相当于表的行。

这里Types 的概念已经被逐渐弱化,Elasticsearch 6.X中,一个Index下已经只能包含一个type,Elasticsearch 7.X中Type的概念已经被删除了。

Elasticsearch采用的是倒排索引!!!

五、索引操作

5.1 创建索引

对比关系型数据库,创建索引就等同于创建数据库。在Postman中,向ES服务器发PUT请求:

http://192.168.1.108:9200/shopping

PUT请求具有幂等性!!! 

5.2 查询索引

在Postman中,向ES服务器发GET请求查看某一个索引:


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值