• 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服务:

    1. docker run --name elasticsearch -d \
    2. -e "discovery.type=single-node" \
    3. -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    4. -p 9200:9200 \
    5. -p 9300:9300 \
    6. 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目录下。 

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

    1. docker stop elasticsearch
    2. docker rm elasticsearch

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

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

    1. docker run --name elasticsearch -d \
    2. -e "discovery.type=single-node" \
    3. -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
    4. -p 9200:9200 \
    5. -p 9300:9300 \
    6. -v /home/elasticsearch/config:/usr/share/elasticsearch/config \
    7. 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请求查看某一个索引:

    
                    
  • 相关阅读:
    初识Numpy
    AH8691-60V降压至3.3V电源芯片:ESOP8封装解决方案
    Python之函数讲解
    R语言剔除时间序列数据中存在的趋势(trend):使用lm函数拟合线性回归模型、使用原始时间序列值减去线性回归线剔除趋势分量
    mybatis
    SpringBoot项目--电脑商城【上传头像】
    SpringMVC——基于MVC架构的Spring框架
    Redis的使用(四)常见使用场景-缓存使用技巧
    .NET 托管vs非托管
    蓝桥杯1049
  • 原文地址:https://blog.csdn.net/y_bccl27/article/details/128080381