ElasticSearch搜索引擎-1_学习笔记(2021.4.11)

15 篇文章 0 订阅

ElasticSearch搜索引擎-1_学习笔记(2021.4.11)

前言: (官网)

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

The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。 能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化 (日志查看系统)。

1.0 Docker环境下安装ElasticSearch (官网文档)

1.1.1 拉取ElasticSearch 镜像

[root@VM-0-9-centos ~]#  docker pull docker.elastic.co/elasticsearch/elasticsearch:7.12.0

1.1.2 启动ElasticSearch 容器

使用Docker启动单节点集群 (集群启动方式看官网)

要启动用于开发或测试的单节点Elasticsearch集群,请指定 单节点发现以绕过引导检查

[root@VM-0-9-centos ~]# docker run -id --name=MyElasticSearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" 9337ed510a0c

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I0LiHmdx-1618152497414)(https://z3.ax1x.com/2021/04/11/c0todO.jpg)]

然后登录进去 docker exec -it 8ba3a70acb87 /bin/bash, 拷贝一份配置文件夹与插件文件夹

docker cp 8ba3a70acb87:/usr/share/elasticsearch/config /usr/local/zhihao_ElasticSearch

docker cp 8ba3a70acb87:/usr/share/elasticsearch/plugins /usr/local/zhihao_ElasticSearch

然后停止删除容器, 以目录挂载方式启动

docker run -id --name=MyElasticSearch -p 9200:9200 -p 9300:9300 -v /usr/local/zhihao_ElasticSearch/config:/usr/share/elasticsearch/config -v /usr/local/zhihao_ElasticSearch/plugins:/usr/share/elasticsearch/plugins -e "discovery.type=single-node" 9337ed510a0c

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3EZWw1ih-1618152497416)(https://z3.ax1x.com/2021/04/11/c0a0sI.jpg)]

如果容器启动失败, 可能原因是JVM或者服务器机子内存太小, 如果是JVM可以通过修改config/jvm.options 配置文件, 搜索-Xms

# 设置 JVM 初始内存为 1G。此值可以设置与-Xmx 相同,以避免每次垃圾回收完成后 JVM 重新分配内存
# 设置 JVM 最大可用内存为 1G
-Xms1g
-Xmx1g

目录 含义:

bin 可执行脚本目录 、 config 配置目录 、jdk 内置 JDK 目录 、 lib类库 、logs日志目录 、 modules 模块目录 、 plugins 插件目录

注意:9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http 协议 RESTful 端口。

测试是否正常启动成功, 浏览器访问: http://119.xx.xxx.xxx:9200/, 出现下面画面则说明正常启动成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WqTFO1Su-1618152497417)(https://z3.ax1x.com/2021/04/11/c0dQfg.jpg)]

2.0 ElasticSearch 相关概念、数据格式

2.1.1 概述

Elasticsearch是面向文档(documentoriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储(store),还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。

2.1.2 Elasticsearch比较传统关系型数据库如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-innQec3z-1618152497419)(https://z3.ax1x.com/2021/04/11/c004OA.jpg)]

MySQL关系型数据库采用的是正排索引, ElasticSearch采用的是倒排索引

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QW2ZEtal-1618152497420)(https://z3.ax1x.com/2021/04/11/c0sKkq.jpg)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G8XvVrf5-1618152497421)(https://z3.ax1x.com/2021/04/11/c0BaAP.jpg)]

2.1.3 索引 index

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。

2.1.4 类型 type

在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。

2.1.5 文档 document

一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表示,而JSON是一个到处存在的互联网数据交互格式。

在一个index/type里面,你可以存储任意多的文档。注意,尽管一个文档,物理上存在于一个索引之中,文档必须被索引/赋予一个索引的type。

2.1.6 字段Field

相当于是数据表的字段,对文档数据根据不同属性进行的分类标识

2.1.7 映射 mapping

mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分词器、是否被索引等等,这些都是映射里面可以设置的,其它就是处理es里面数据的一些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好。例如:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-feJrkmCP-1618152497421)(https://z3.ax1x.com/2021/04/11/c0yJ8f.jpg)]

2.1.8 接近实时 NRT

Elasticsearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒以内)

扩展:

3.0 elasticsearch-head (官网)

elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。

3.1.1 Docker环境下载安装

docker run -p 9100:9100 mobz/elasticsearch-head:5

3.1.2 访问http://119.xx.xx.xxx:9100/

然后输入elasticsearch地址进行连接, 然后如果连接不上, 浏览器控制台报跨域异常, 则需要解决跨域问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZmbIC1Oq-1618152497422)(https://z3.ax1x.com/2021/04/11/c020yT.jpg)]

修改elasticsearch/config下的配置文件:elasticsearch.yml,增加以下三句命令:

network.host: 119.xx.xx.xxx
http.cors.enabled: true
http.cors.allow-origin: "*"

其中:

http.cors.enabled:true:此步为允许elasticsearch跨域访问,默认是false。

http.cors.allow-origin:"*":表示跨域访问允许的域名地址(*表示任意)。

network.host: 119.xx.xx.xxx:主机域名

【重启Elasticsearch】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QRmwtcSD-1618152497422)(https://z3.ax1x.com/2021/04/11/c02BOU.jpg)]
1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懵懵懂懂程序员

如果节省了你的时间, 请鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值