(一)Elasticsearch学习笔记:安装与配置

Elasticsearch 简介

ElasticSearch(简称 ES) 是一个基于 Lucene 构建的开源,分布式,RESTful 搜索引擎。

设计用于云计算中,能够达到搜索实时、稳定、可靠和快速,并且安装使用方便。

支持通过 HTTP 请求,使用 JSON 进行数据索引。另外,ES还有非常强大的统计功能 (facets) , 一个例子:现在系统中的需要实时处理的统计功能从 MySQL 转接到 ElasticSearch , 准确性一致, 速度从原来 1900ms -> 50ms。

Apache Lucene只是一个库。

想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

关系数据库与ES

Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields

Elasticsearch 安装

  1. 安装JDK
    需要JDK1.7或以上,官方推荐使用最新版JDK

  2. 安装与启动ES
    下载ES

    1
    https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.3/elasticsearch-2.3.3.tar.gz

    解压到指定目录

    1
    tar -zxvf elasticsearch-2.3.3.tar.gz

    进入bin目录启动ES

    1
    2
    cd elasticsearch-2.3.3/bin
    ./elasticsearch
    start

    至此,可以查看ES集群的信息

    1
    curl -XGET 'http://localhost:9200?pretty'
    info
  3. 关闭ES

    三种方式关闭:

    • 如果节点是连接到控制台,按下Ctrl+C;
    • 通过发送TERM信号杀掉服务器进程(参考Linux上的kill命令和Windows上的任务管理器);
    • 使用REST API

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      //关掉整个集群
      curl -XPOST http://localhost:9200/_cluster/nodes/_shutdown

      //关闭单一节点,假如节点标识符是BlrmMvBdSKiCeYGsiHijdg,如何查看见下一条
      curl –XPOST http://localhost:9200/_cluster/nodes/BlrmMvBdSKiCeYGsiHijdg/_shutdown

      //查看节点标识符
      curl -XGET http://localhost:9200/_cluster/nodes/

      //检查集群健康度
      curl -XGET http://localhost:9200/_cluster/health?pretty
      health

Elasticsearch 插件

Marvel

Marvel用来监控 Elasticsearch 集群实时、历史状态的有力用具,便于性能优化以及故障诊断。

监控主要分为六个层面,分别是集群层、节点层、索引层、分片层、事件层、Sense,在开发环境下免费使用。

1
2
3
4
5
6
7
8
./bin/plugin -i elasticsearch/marvel/latest
Kibana

Kibana是一个用于ElasticSearch分析和查询的仪表盘。

tar zxvf kibana-4.5.0-linux-x64.tar.gz
cd ./kibana-4.5.0-linux-x64/bin/
./kibana

可以通过下行命令来查看节点上的插件列表

1
curl http://localhost:9200/_nodes/_local/plugins

Elasticsearch 配置

config/elasticsearch.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# ---------------------------------- Cluster -----------------------------------
#
# Use a descriptive name for your cluster:
#
cluster.name: ela
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-1
#
# Add custom attributes to the node:
#
# node.rack: r1
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
# http.port: 9200
#
# For more information, see the documentation at:
# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>


# personal setting,use for http post add new field
script.update: true
script.mapping: true
script.engine.groovy.file.aggs: true
script.engine.groovy.file.mapping: true
script.engine.groovy.file.search: true
script.engine.groovy.file.update: true
script.engine.groovy.file.plugin: true
script.engine.groovy.indexed.aggs: true
script.engine.groovy.indexed.mapping: true
script.engine.groovy.indexed.search: true
script.engine.groovy.indexed.update: true
script.engine.groovy.indexed.plugin: true
script.engine.groovy.inline.aggs: true
script.engine.groovy.inline.mapping: true
script.engine.groovy.inline.search: true
script.engine.groovy.inline.update: true
script.engine.groovy.inline.plugin: true

cluster.name:保存集群的名字,不同的集群用名字来区分,配置成相同集群名字的各个节点形成一个集群。节点启动时据此自动加入对应的集群,如果集群存在的话。

node.name:实例(该节点)的名字,可以不定义此参数,这时,Elasticsearch自动选择一个唯一的名称。注意,此名称是每次启动时选择的,所以在每次重启后名称可能都不一样。在很长的时间区间或者重启过后,需要在API中提及具体实例名称,或者用监控工具查看节点,自定义一个名称还是很有帮助的。

http.port:HTTP API的默认端口号是9200,Elasticsearch很聪明,如果默认端口不可用,引擎将绑定到下一个可用端口。

network.bind_host:默认情况下 Elasticsearch 的 RESTful 服务只有本机才能访问,也就是说无法从主机访问虚拟机中的服务,可以设置为0.0.0.0以方便主机调式虚拟机。

Reference