ElasticSearch 安装与使用

环境配置安装

系统与硬件环境

  • 操作系统:Linux、Mac OS、Windows
  • CPU: >= 2 核
  • 内存:>= 4G
  • 备注:可选择个人电脑、云服务器、虚拟机等

Java 环境(>= 1.8.*)

  • Oracle JDK 下载:wget http://download.oracle.com/otn-pub/java/jdk/9.0.1+11/jdk-9.0.1_linux-x64_bin.tar.gz?AuthParam=1510571692_bb1867a1a9af8f41c5c528c50747ba35
  • 安装:

    • 移动到安装目录:cp jdk-9.0.1.tar.gz /usr/local
    • 解压缩:tar -zxvf jdk-9.0.1.tar.gz
    • 配置环境变量:vi /etc/profile,

      1
      2
      3
      4
      export JAVA_HOME=/usr/local/jdk-9.0.1
      export JRE_HOME=$JAVA_HOME/jre
      export CLASS_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
      export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    • 环境生效:source /etc/profile

    • 测试: java -version, 出现 版本号表示安装成功!
    • 备注: 在线安装

ElasticSearch 安装

源码安装

  • 源码下载:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.4.tar.gz
  • 配置:编辑 vi elasticsearch.yml 文件
  • 启动:切换到ES安装目录,执行命令 ./bin/elasticsearch
  • 测试:curl http://localhost:9200/
  • 备注:
    • 启动时出现内存不足问题:设置交换空间
    • root 不能以 root 用户启动问题:创建 ES 用户组

编译包安装(以ubuntu 为例,生产环境推荐此方式安装)

  • 下载编译包:wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.4.deb
  • 安装:sudo dpkg -i elasticsearch-5.6.4.deb
  • 配置开机自启动:
    • sudo /bin/systemctl daemon-reload
    • sudo /bin/systemctl enable elasticsearch.service
  • 启用命令:
    • sudo systemctl start elasticsearch.service
    • sudo systemctl stop elasticsearch.service
    • sudo systemctl restart elasticsearch.service

使用

基本使用

  • 索引数据:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    curl -XPUT 'localhost:9200/megacorp/employee/1?pretty' -H 'Content-Type: application/json' -d'
    {
    "first_name" : "John",
    "last_name" : "Smith",
    "age" : 25,
    "about" : "I love to go rock climbing",
    "interests": [ "sports", "music" ]
    }
    '
  • 检索数据:

    1
    curl -XGET 'localhost:9200/megacorp/employee/1?pretty'
  • 更新数据:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    curl -XPUT 'localhost:9200/megacorp/employee/1?pretty' -H 'Content-Type: application/json' -d'
    {
    "first_name" : "John",
    "last_name" : "Smith",
    "age" : 25,
    "about" : "I love to go rock climbing",
    "interests": [ "sports", "music" ]
    }
    '
  • 删除数据:

    1
    curl -XDELETE 'localhost:9200/megacorp/employee/1?pretty'

数据检索

  • 简单检索:

    1
    curl -XGET 'localhost:9200/megacorp/employee/_search?pretty'
    1
    curl -XGET 'localhost:9200/megacorp/employee/_search?q=last_name:Smith&pretty'
  • 查询表达式检索

    基础查询:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    curl -XGET 'localhost:9200/megacorp/employee/_search?pretty' -H 'Content-Type: application/json' -d'
    {
    "query" : {
    "match" : {
    "last_name" : "Smith"
    }
    }
    }
    '

    带过滤查询:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    curl -XGET 'localhost:9200/megacorp/employee/_search?pretty' -H 'Content-Type: application/json' -d'
    {
    "query" : {
    "bool": {
    "must": {
    "match" : {
    "last_name" : "smith"
    }
    },
    "filter": {
    "range" : {
    "age" : { "gt" : 30 }
    }
    }
    }
    }
    }
    '
  • 相关配置

    • 检索相关性:TF/IDF(默认)、BM25(可选择)
    • 分词器(中英文分词器)

api 调用

  • RESTful api 和 json
  • 支持语言
    • Java
    • C#
    • Python
    • javascript
    • PHP
    • Perl
    • Ruby
    • curl

相关组件(Elastic Stack)

Kibana

Kibana 能够以图表的形式呈现数据,并且具有可扩展的用户界面,供您全方位配置和管理 Elastic Stack

Elasticsearch

Elasticsearch 是基于 JSON 的分布式搜索和分析引擎,专为实现水平扩展、高可用和管理便捷性而设计

Beats

Beats 是轻量型采集器的平台,从边缘机器向 Logstash 和 Elasticsearch 发送数据

  • Filebeat: Filebeat 将为您提供一种轻量型方法,用于转发和汇总日志与文件
  • Metricbeat: 可以获取系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据,以及获得如同系统上 top 命令类似的各个进程的统计数据
  • Packbeat : 用于深挖网线上传输的数据,了解应用程序动态。Packetbeat 是一款轻量型网络数据包分析器,能够将数据发送至 Logstash 或 Elasticsearch
  • Winlogbeat: 用于密切监控基于 Windows 的基础架构上发生的事件。Winlogbeat 能够以一种轻量型的方式,将 Windows 事件日志实时地流式传输至 Elasticsearch 和 Logstash
  • Heartbeat: 通过主动探测来监控服务可用性, Heartbeat 能够通过 ICMP、TCP 和 HTTP 进行 ping 检测,同时也支持 TLS、认证和代理。您可以借助简易的 DNS 解析,监控负载均衡服务器背后的所有主机

Logstash

Logstash 是动态数据收集管道,拥有可扩展的插件生态系统,能够与 Elasticsearch 产生强大的协同作用

X-Pack

X-Pack 是集成了多种便捷功能的单个插件 security、alerting、monitoring、reporting、graph 探索和 machine learning — 您可以在 Elastic Stack 中放心地使用这些功能。

Elastic Cloud(阿里云)

相关资源

  1. 官方文档https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
  2. 中文论坛https://elasticsearch.cn/
  3. mysql 与 es 数据同步:https://github.com/siddontang/go-mysql-elasticsearch
  4. 中文分词器:https://github.com/medcl/elasticsearch-analysis-ik
hudengjin wechat
huprince's 微信公众号
激情打赏,放肆挥霍