使用docker配置Elasticsearch开发环境

一、关于Elasticsearch的认识

  • 1、什么是Elasticsearch

    ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索 引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的 开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索。稳 定,可靠,快速,安装使用方便。

    简单概括:ElasticSearch是一个数据库,一个基于Restful接口型的数据库,有点类似mysql这样的数据库,更确切的来说是类似mongodb文档型数据库

  • 2、几种搜索数据的方式

    • 直接使用mysqlLIKE进行模糊查询(不建议使用)
    • 使用数据库的全文本搜索(搜索速度慢)
    • 使用ElasticSearch

二、关于ElasticSearch中的几个概念

  • 集群(cluster)

    表示一个集群,集群中多个节点,其中一个节点是主节点,这个节点是通过选举产生的(主从节点是对于集群内部来说的)。ElasticSearch的一个概念是去中心化,字面上理解为无中心节点,这是对于集群外部来说的,因为从外部来看 ElasticSearch 集 群,在逻辑上是个整体,你与任何一个节点的通信和与整个es 集群通信是等价的。

  • 索引(index)

    索引我们可以简单的理解为数据库,在ElasticSearch中可以创建一个或者多个索引(index)。我们可以向索引写入文档或者从索引中读取文档(可以比喻为我们可以向数据库中插入数据和读取数据)

  • 文档(document)

    文档可以简单的理解为数据库中的数据表,这个是ElasticSearch最终操作的实体

  • 映射(mapping)

    素有文档写进索引之前都会先进行分析,如何将输入的文本分隔为词条、哪些词条又会被过滤,这种行为叫做映射

  • 类型(type)

    每个文档都有与之对应的类型,这允许用户在一个索引中存储多中文档类型,并未不同文档提供类型,提供不同的映射

  • 分片(shards)

    代表索引分片,ElasticSearch可以把一个完整的索引分成多个分片,这样的好处是可以把一个 大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索 引创建前指定,并且索引创建后不能更改

三、docker安装Elasticsearch

  • 1、直接安装最新版的镜像

    docker pull elasticsearch
    
  • 2、启动镜像

    docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch
    
  • 3、浏览器上输入测试是否启动容器成功

    http://localhost:9200
    
    {
      name: "N9kE1aI",
      cluster_name: "elasticsearch",
      cluster_uuid: "4B0Z7qa2QjSbsRB1JMTZzw",
      version: {
        number: "5.6.12",
        build_hash: "cfe3d9f",
        build_date: "2018-09-10T20:12:43.732Z",
        build_snapshot: false,
        lucene_version: "6.6.1"
      },
      tagline: "You Know, for Search"
    }
    
  • 4、处理跨域的问题

    # 进入容器中
    docker exec -it [容器ID] /bin/bash
    # 进入目录下
    cd config
    # 写入文件
    echo 'http.cors.allow-origin: "*"' >> elasticsearch.yml
    echo "http.cors.enabled: true" >> elasticsearch.yml
    # 查看文件内容
    cat elasticsearch.yml
    # 退出容器
    exit
    
  • 5、重启容器

    docker restart [容器ID]
    

四、安装中文分词插件

  • 1、官网地址

  • 2、下载地址

  • 3、将下载的文件拷贝到docker容器中

    docker cp [目录]/elasticsearch-analysis-ik-7.11.2.zip 容器ID:/usr/share/elasticsearch/plugins
    
  • 4、进入容器中

  • 5、在/usr/share/elasticsearch/plugins/目录下创建一个文件夹ik,并且将刚刚拷贝的分词软件移动到ik目录下

    # 创建文件
    mkdir ik
    # 移动文件
    mv elasticsearch-analysis-ik-7.11.2.zip ik
    
  • 6、解压文件和删除文件

    unzip elasticsearch-analysis-ik-7.11.2.zip
    # 删除压缩包
    rm -rf elasticsearch-analysis-ik-7.11.2.zip
    
  • 7、退出容器并且重启(注意这里可能会出错误)

  • 8、如果出错误了,那么就是在分词插件中配置的版本与docker安装的elasticsearch不一致,需要修改一致

    • 查看elasticsearch版本

      # 查看已经安装elasticsearch的版本
      docker image inspect elasticsearch:latest | grep -i version
      
      "JAVA_VERSION=8u181",
      "JAVA_DEBIAN_VERSION=8u181-b13-1~deb9u1",
      "CA_CERTIFICATES_JAVA_VERSION=20170531+nmu1",
      "GOSU_VERSION=1.10",
      "ELASTICSEARCH_VERSION=5.6.12",
      "ELASTICSEARCH_DEB_VERSION=5.6.12"
      "DockerVersion": "17.06.2-ce",
      "JAVA_VERSION=8u181",
      "JAVA_DEBIAN_VERSION=8u181-b13-1~deb9u1",
      "CA_CERTIFICATES_JAVA_VERSION=20170531+nmu1",
      "GOSU_VERSION=1.10",
      "ELASTICSEARCH_VERSION=5.6.12",
      "ELASTICSEARCH_DEB_VERSION=5.6.12"
      
    • 安装vim编辑器

      apt-get update
      apt-get install vim
      
    • 进入elasticsearch中修改插件的对应的版本

      # 编辑文件
      vim plugin-descriptor.properties
      # 修改版本与之对应
      elasticsearch.version=5.6.12
      
    • 重启容器

  • 9、或者你先查看你下载的中文分词插件的版本,然后去下载对应的ElasticSearch的版本

五、安装客户端可视化工具

  • 1、使用docker安装mobz/elasticsearch-head

    docker pull mobz/elasticsearch-head:5
    
  • 2、启动容器

    docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
    
  • 3、浏览器查看会自动连接到Elasticsearch

    http://localhost:9100/
    

    在这里插入图片描述

  • 4、创建索引

六、创建索引异常处理

  • 1、当你点击创建索引,提交没任何反应的时候,你就打开浏览器控制台查看下 在这里插入图片描述

  • 2、进入mobz/elasticsearch-head容器中修改代码

    docker exec -it 容器ID /bin/bash
    
  • 3、修改文件/usr/src/app/_site/vendor.js

    # 更新软件包
    apt-get update
    # 安装vim
    apt-get install vim
    
  • 4、修改代码一(看好行号)在这里插入图片描述

    # 将代码
    contentType: "application/x-www-form-urlencoded
    # 修改为
    contentType: "application/json;charset=UTF-8"
    
  • 5、修改代码而(看好行号)在这里插入图片描述

    # 将代码
    var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
    # 修改为
    var inspectData = s.contentType === "application/json;charset=UTF-8" &&
    
  • 6、重启容器

    docker restart 容器ID
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

水痕01

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值