Advertisement

手把手教你如何安装 Elasticsearch

阅读量:

当我们构建一个电商网站时, 如果仅仅依赖传统的通过数据库进行数据检索的方式, 那么在数据库内容数量有限的情况下, 只能勉强实现快速检索功能。然而, 当大量数据存儲于数据库中时, 采用传统的检索方式会导致延迟问题, 这将直接影响用户体验的流畅性。因此, 为了提高效率并保证良好的用户体验, 通常建议采用 Elasticsearch 这样的搜索引擎技术来进行数据检索操作

1、Elasticsearch简介

广泛应用于各个领域的全文搜索技术,在这一领域中具有极高的使用频率。在这一领域中具有极高的使用频率。...原样保留,并且通过优化提升了效率与效果。如维基百科等平台均在其技术支持体系中采用了该技术方案。

Elasticsearch是一个分布式的可扩展性实时索引和分析平台,在Apache Lucene™的基础上构建而成。作为独立的技术框架,在实际应用中实现其功能需要具备Java编程能力,并结合Lucene进行集成部署;这一过程往往意味着较高的学习门槛以及复杂的实现细节。

文档:

官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

官方文档(中文)(版本较旧):https://www.elastic.co/guide/cn/elasticsearch/guide/current/foreword_id.html

2、基本概念

2.1 index(索引)

在任何情况下,在传统的关系型数据库领域内进行比较时,在这种架构下,在任何情况下,在这种架构下

2.2 Type(类型)

分类属于索引内部的逻辑分区(category/partition),每个索引内可能包含单一或多个类别(class)。类似于传统的关系型数据库中使用的概念,则分类相当于‘表’。

ElasticSearch7—去掉 type 概念:

关系型数据库中的数据表示相互独立的特点使得它们之间即便有相同的字段名也不会产生混淆。

相比之下,在 Elasticsearch(ES)中情况有所不同:即使 ES 中存在不同类型的字段也具有相同的名称,在 Lucene 内核中的处理方式仍然是统一一致的。

在同一个 Elasticsearch 索引中,默认情况下属于不同类型的字段若具有相同的名称会被视为同一个 field 进行处理。

为了确保一致性,在定义 field 映射时需要分别对每个类型进行配置。

通过去除 type 信息可以在一定程度上提升 Elasticsearch 的数据处理效率。

ES 7.x

URL 中的 type 参数 可选,比如索引一个文档不再要求提供文档类型

ES 8.X

不再支持 URL 中的 type 参数

解决:

1、将索引从多类型迁移到单类型,每种类型文档一个独立的索引

2、将已存在的索引下的类型数据,全部迁移到指定位置即可,详见数据迁移

2.3 Document(文档)

该文档可被视为索引与搜索的基本单位。它是一个包含一个或多个字段(Field)的容器,在其中每个字段都具有名称以及一个或多个值。通常情况下,在这些字段中存在大量数值时会将其称作"多值域"。该文档遵循JSON格式来进行表示操作。不同类型的文档可能包含不同的字段集合,并且同一类别的文档通常具有一定程度上的相似性。

具体而言,在特定索引中存储对应的数据类型(Type)中的一个文档(Document),该文档采用JSON格式表示;类似于MySQL中的表结构中存储的内容。

2.4 Cluster(集群)

一组或多台具有相同的cluster.name配置参数的节点构成它们共同承载着数据存储和计算资源的压力

2.5 节点(Node)

一个运行中的 Elasticsearch 实例称为一个节点。

ES集群中的节点有三种不同的类型:

主节点用于处理集群内的所有类型变更情况(如增减索引或增减节点),并支持多种操作选项。该模块专注于集群范围内的事务处理,并未涉及单机数据修改或检索功能。具体配置可参考相关系统参数说明。

数据节点:其中每个数据节点包含存储的数据及其对应的倒排索引。在默认情况下,每个节点都配置为一个数据节点(其中包括主节点),可以通过node.data属性来配置相关参数。

数据节点:其中每个数据节点包含存储的数据及其对应的倒排索引。在默认情况下,每个 node 都配置为一个 data node(其中包括 main node),可以通过 node.data 属性来配置相关参数。

当一个node的master和data属性均为false时,则称该node为协调节点用于处理客户请求并平衡各节点的工作量。

3、倒排索引

倒排表: 倒排表亦即反向表。
正向映射则基于key指向其对应的value集合。
而反向映射则基于value寻觅相关的key信息。

将文档分词后归类到相应的记录中。在查询过程中, 首先查找包含关键词的记录集, 并计算关键词的相关性评分, 综合评估后输出最终结果

4、Docker安装Elasticsearch

4.1 下载镜像文件

复制代码
 docker pull elasticsearch:7.4.2  #存储和检索数据

    
 docker pull kibana:7.4.2         #可视化检索数据

4.2 创建实例

①、Elasticsearch

配置:

复制代码
 mkdir -p /mydata/elasticsearch/config # 用来存放配置文件

    
 mkdir -p /mydata/elasticsearch/data  # 数据
    
 echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml # 允许任何机器访问
    
 chmod -R 777 /mydata/elasticsearch/ ## 设置elasticsearch文件可读写权限

启动:

复制代码
 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \

    
 -e  "discovery.type=single-node" \
    
 -e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
    
 -v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    
 -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
    
 -v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    
 -d elasticsearch:7.4.2

设置开启自启:

复制代码
    docker update elasticsearch --restart=always

特别注意:

在测试环境中配置ES的初始内存与最大内存以避免因内存不足而导致程序无法启动

测试:

②、Kibana

复制代码
    docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.88.14:9200 -p 5601:5601 -d kibana:7.4.2

上面的ip地址:http://192.168.88.14:9200 改成自己Elasticsearch上的地址

测试:

马士兵教育

马士兵教育

马士兵教育

全部评论 (0)

还没有任何评论哟~