Elasticsearch5.3.1+Kibana5.3.1从单机到分布式的安装与使用2

1、Elasticsearch中的基本概念:

Elasticsearch所涉及到的每一项技术都不是创新或者革命性的,全文检索,分析系统以及分布式数据库这些早就已经存在了。它的革命性在于将这些独立且有用的技术整合成一个一体化的、实时的应用。它对新用户的门槛很低,固然它也会跟上你技能和需求增加的步伐。-《Elasticsearch权威指南》html

Elasticsearch面向文档(document oriented)的,这意味着它能够存储整个对象或文档 (document)。然而它不只仅是存储,还会索引(index)每一个文档的内容使之能够被搜索。在 Elasticsearch中,你能够对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往彻底不一样,这也是Elasticsearch可以执行复杂的全文搜索的缘由之 一。 -《Elasticsearch权威指南》node

在数据库的学习中咱们就知道了索引这个概念,索引是为提升查询效率而诞生的。索引让咱们更快的定位须要查询的关键字。以Mysql来讲:[从索引的数据结构划分]Mysql数据库中包含FULLTEXT,HASH,BTREE,RTREE这几种索引,分别是全文索引(全文索引是MyISAM的一个特殊索引类型,主要用于全文检索),hash索引(只有Memory存储引擎显示支持hash索引),B-tree B树索引(目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree做为索引结构),R-tree 空间索引(MyISAM支持空间索引,主要用于地理空间数据类型)。sql

全文索引(FULL-TEXT):用于全文检索(在一个文件中搜索匹配的词),又被称为倒排文档索引,是现代搜索引擎的关键技术。这也是ES的核心侧重点,致力于用户之前所未有的速度检索和分析大数据。数据库

一、Mapping:至关于数据库表的schema,即定义这张表的字段和类型json

二、Index:索引至关于数据库数据结构

三、Type:至关于数据库的表app

四、Document:行数据curl

五、Fileds:字段分布式

六、Id:至关于记录的编号ide

七、shared:分片,这是ES提供分布式搜索的基础,其含义为将一个完整的index分红若干部分存储在相同或不一样的节点上,这些组成index的部分就叫作shard

2、Elasticsearch官方示例数据的导入:[localhost换成本机IP便可]

一、获取示例数据:

  • wget https://download.elastic.co/demos/kibana/gettingstarted/shakespeare.json
    wget https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip
    wget https://download.elastic.co/demos/kibana/gettingstarted/logs.jsonl.gz

    解压缩:

  • unzip accounts.zip
    gunzip logs.jsonl.gz

二、导入示例数据:随便选取一个节点导入,这里为分布式环境,单机版同理。

  • 建立mapping: 如下下指令能够直接在终端运行,也能够在Kibana的控制台运行。
  • curl -H 'Content-Type: application/json' -XPUT http://localhost:9200/shakespeare -d '
    {"mappings" : {
      "_default_" : {
       "properties" : {
        "speaker" : {"type": "string", "index" : "not_analyzed" },
        "play_name" : {"type": "string", "index" : "not_analyzed" },
        "line_id" : { "type" : "integer" },
        "speech_number" : { "type" : "integer" }
       }
      }
     }
    }';
    curl -H 'Content-Type: application/json' -XPUT http://localhost:9200/logstash-2015.05.18 -d '
    {"mappings": {
        "log": {
          "properties": {
            "geo": {
              "properties": {
                "coordinates": {
                  "type": "geo_point"
                }
              }
            }
          }
        }
      }
    }';
    curl -H 'Content-Type: application/json' -XPUT http://localhost:9200/logstash-2015.05.19 -d '
    {"mappings": {
        "log": {
          "properties": {
            "geo": {
              "properties": {
                "coordinates": {
                  "type": "geo_point"
                }
              }
            }
          }
        }
      }
    }';
    curl -H 'Content-Type: application/json' -XPUT http://localhost:9200/logstash-2015.05.20 -d '
    {"mappings": {
        "log": {
          "properties": {
            "geo": {
              "properties": {
                "coordinates": {
                  "type": "geo_point"
                }
              }
            }
          }
        }
      }
    }';
  • 导入数据:
  • curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary @accounts.json
    curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json
    curl -H 'Content-Type: application/x-ndjson' -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl

三、查看是否导入成功:

  • curl 'localhost:9200/_cat/indices?v'

3、ES-head集群管理: 

一、分布式环境中只需选取一个节点启动ES-head,不管是否是Master节点,都能链接到整个集群,这里选取node-1(192.168.230.150)导入。导入以后从新访问192.168.230.150:9100查看head界面可获得以下:

二、全部数据导入后会分片存储在不一样的节点上,默认是5个分片,一个副本。每个分片的副本都不会和本体存在一个节点上从而保证一个节点数据丢失可已获得恢复。咱们能够修改链接的节点:结果同上,说明不管链接哪一个节点都能获取集群的信息。

三、关闭其中一个节点(这里关闭node-1,master节点看看会出现什么结果)

  • 咱们发现集群健康值由green变为了yellow,从新选举了node-3为主节点Master。咱们从新启动node-1查看:

  • node-1节点恢复了,所存储的数据分片也恢复了,node-3还是Master。

四、ES-head作一个简单的查询示例:

   ES-head能够清楚的查看集群的各类信息,节点,索引,数据。这里简单示例一个查询,具体功能后面在探索。查询type为account的数据条件是年龄范围在10-50之间。

4、Kibana功能组件:

一、开启Kibana,访问5601端口:http://ip:5601 建立Index pattern :ba*,log*,sh*(Management->Index Patterns->add New->取消全部选项->Create)

二、Discover数据查询展现:根据条件过滤选择要展现的字段右侧点击add,点开数据详情能够选择table和json两种格式展现。

三、Visualize可视化:多种可选择图形可视化。

  • 可选图形有:饼状图,折线图,条形图,坐标图。。。等。
  • 下面根据示例建立一个饼状图:(Visualizer->Create a Visualizer->pie chart->From a New Search, Select Index选择ba*)获得下图:
  • 选择过滤条件和聚合函数:(buckets:Split Slices->Aggregation->Range->Field->balance-add Range选择数据的范围 )

  •  在此基础上再添加条件:(Add sub-buckets->Split Slices->aggregation ->Terms ->field ->age ->Apply changes运行):

  • 点击右上角的save保存为pie-ba-example.

  • 建立条形图:参考官方文档https://www.elastic.co/guide/en/kibana/current/tutorial-visualizing.html获得结果以下:
  • 保存为log-Vertical-example。
  • 建立坐标图:参考官方文档https://www.elastic.co/guide/en/kibana/current/tutorial-visualizing.html获得结果以下:
  • 保存为log-map-example

四、dashboard:仪表盘,进行多图组合展现。

  • dashboard->create a dashboard->add,而后根据过滤条件选择咱们须要的图点击图选择,可将多图放在一块儿展现。将上几步作的进行展现以下:
  • 保存为dashboard-example。

五、Dev Tools:控制台,能够发送http请求,用Curl能够作的请求,在这里均可以作。只要能和ES的REST API对接,均可以在这里作。

  • GET:
  • PUT:

  •  DELETE:

六、Management:管理Index Pattern,Object (建立保存的图像),系统的一些配置文件能够进行编辑,略过(暂时尚未细细研究)。

到这里,EK的安装和使用的基本介绍就完了。

 

注意:

  咱们在DB中建立数据库的时候是先配置schema在填写数据库的名字而后保存,这样一个数据库就建好了,这里在建立Mapping的时候其中就包含index的命名。其中Json参数包含type也就是表名,以及字段的定义。

  Kibana主要作可视化展现,须要将可视化的组件多熟悉,了解过滤条件和聚合函数如此才能和业务结合。

相关文章
相关标签/搜索