zoukankan      html  css  js  c++  java
  • docker 安装 ElasticSearch:7.4.2

    ElasticSearch

    ElasticSearch 简介

    Elasticsearch是一个分布式、可扩展、实时的搜索与数据分析引擎。它可以让您快速且近实时地存储,检索以及分析海量数据。它通常用作那些具有复杂搜索功能和需求的应用的底层引擎或者技术。

    全文搜索属于最常见的需求,开源的 Elasticsearch 是目前全文搜索引擎的首选。

    Elasticsearch的底层是开源库吧Lucene。但是,你没法直接用,必须自己写代码调用它的接口,Elastic 是 Lunce 的封装,提供了 REST API 的操作接口,开箱即用。

    官方文档:点我传送

    官方中文文档:点我传送

    社区文档:点我传送点我传送

    ElasticSearch 概念

    • 索引

    • 类型

    • 文档

    • 属性

    • 倒排索引表

    ElasticSearch quick start

    docker安装ElasticSearch Kibana

     # 存储和检索数据
     docker pull elasticsearch:7.4.2
     
     # 可视化检索数据
     docker pull kibana:7.4.2

    至少保证内存可用量为300+,越多越好

     # 查看可用内存大小
     free -m

    创建实例

    ElasticSearch

     # 创建elasticsarch的config
     mkdir -p /mydata/elasticsearch/config
     
     # 创建elasticsarch的data
     mkdir -p /mydata/elasticsearch/data
     
     # 配置elasticsearch.yml
     # 注: 'host:'中 ':'后跟着空格
     echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
     
     # 设置elasticsearch目录权限
     chmod -R 777 /mydata/elasticsearch/
     
     # 启动elasticsearch
     # 特别注意:-e ES_JAVA_OPTS="-Xms64m -Xmx256m" 测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了 ES
     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 重启时,容器能自动启动
     docker update elasticsearch --restart=always
     docker restart elasticsearch

    访问 ip:9200

     # 查看虚拟机ip
     ip addr
     
     # 访问 ip:9200
     192.168.188.128:9200

    Kibana

    启动kibana时有两种方式,任选其一。如果是通过docker使用kibana,则直接执行方式二。

    方式一:
     # 启动kibana
     # ELASTICSEARCH_HOSTS 一定改为自己虚拟机的地址
     docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.188.128:9200 -p 5601:5601
     -d kibana:7.4.2
     
     # 当 Docker 重启时,容器能自动启动
     docker update kibana --restart=always
     docker restart kibana

    访问 ip:5601

     # 查看虚拟机ip
     ip addr
     
     # 访问 ip:5601
     192.168.188.128:5601
    方式二:
     # 查看docker中elasticSearch的ip
     # 查看 es 实例暴露的IP
     docker inspect elasticsearch
     # 重新创建实例
     docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.3:9200
     -p 5601:5601 -d kibana:7.4.2
     # 当 Docker 重启时,容器能自动启动
     docker update kibana --restart=always
     docker restart kibana

    ElasticSearch 使用

    _cat

     # 查看所有节点
     http://192.168.188.128:9200/_cat/nodes
     
     # 查看 es 健康状况
     http://192.168.188.128:9200/_cat/health
     
     # 查看主节点
     http://192.168.188.128:9200/_cat/master
     
     # 查看所有索引
     http://192.168.188.128:9200/_cat/indices

    新增数据

    elasticsearch通过接收PUT和POST请求来新增数据,然而在新增数据之前,我们需要来了解elasticsearch中的几个概念:

    • 索引

    • 类型

    • 文档

    • 属性 在elasticsearch中新增数据称其为 索引一个文档

    问题汇总

    问题一:

    通过docker logs [容器id]查看日志,如果出现以下错误:

     {.. "message" : "Unable to revive connection: http://ip:9200/"}

    87130361-7543-4c8d-B583-97E0CB168321.png 错误原因: Docker容器中启动服务和直接在Linux环境下安装服务,会有ip上的区别,不在是服务器的物理ip,而是容器对外暴露对的ip。简单来说,需要设置kibana的ElasticSearch Ip为docker容器的ip,而不是物理机的Ip。

    解决方法:查看启动kibana方式二

    通过docker inspect elasticsearch查看ES实例暴露出来的ip 。停止并删除现有的Kibana容器,然后重新启动kibana并添加环境变量参数:-e ELASTICSEARCH_HOSTS="http://es暴露的IP:9200"

     # 停止实例
     docker stop kibana
     # 删除实例
     docker rm kibana
     # 查看 es 实例暴露的IP
     docker inspect elasticsearch
     # 重新创建实例
     docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.3:9200
     -p 5601:5601 -d kibana:7.4.2

    99C0D170-8F21-4557-8230-2346BA25E6F8.png

    问题二:

    打开网址一直显示以下页面 :

     Kibana server is not ready yet

    错误原因: Docker容器中启动服务和直接在Linux环境下安装服务,会有ip上的区别,不在是服务器的物理ip,而是容器对外暴露对的ip。简单来说,需要设置kibana的ElasticSearch Ip为docker容器的ip,而不是物理机的Ip。

    解决方法:查看启动kibana方式二

    通过docker inspect elasticsearch查看ES实例暴露出来的ip 。停止并删除现有的Kibana容器,然后重新启动kibana并添加环境变量参数:-e ELASTICSEARCH_HOSTS="http://es暴露的IP:9200"

     # 停止实例
     docker stop kibana
     # 删除实例
     docker rm kibana
     # 查看 es 实例暴露的IP
     docker inspect elasticsearch
     # 重新创建实例
     docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.3:9200
     -p 5601:5601 -d kibana:7.4.2

    99C0D170-8F21-4557-8230-2346BA25E6F8.png

  • 相关阅读:
    left join问题
    SQL索引
    数据库查询优化
    define and inline
    程序的内存分配
    __closure
    this指针
    java笔记
    Visual Studio Code(VSCODE)语言设置
    Excel 2010如何打开多个独立窗口?
  • 原文地址:https://www.cnblogs.com/HOsystem/p/14446947.html
Copyright © 2011-2022 走看看