Elasticsearch 基础入门

  • 原创
  • Madman
  • /
  • /
  • 0
  • 2191 次阅读

elk-min.jpg

Synopsis: Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据(结构化、非结构化、地理位置、度量指标),帮助您发现意料之中以及意料之外的情况。无论 Elasticsearch 是在一个节点上运行,还是在一个包含 300 个节点的集群上运行,您都能够以相同的方式与 Elasticsearch 进行通信。 它能够水平扩展,每秒钟可处理海量事件,同时能够自动管理索引和查询在集群中的分布方式,以实现极其流畅的操作

1. 安装 Elasticsearch 6

参考: https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html

1.1 安装 JAVA 8

Elasticsearch是使用Java编写的,它的内部使用Lucene做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。所以,Elasticsearch需要java8或更高版本,先检查CentOS 7的JAVA版本:

[root@CentOS ~]# java -version

如果还没有安装,或版本过低,请先安装JAVA:

[root@CentOS ~]# yum -y install java-1.8.0-openjdk

1.2 安装 Elasticsearch RPM

# 1. Download and install the public signing key
[root@CentOS ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# 2. Create yum repository
[root@CentOS ~]# vim /etc/yum.repos.d/elasticsearch.repo
内容如下:
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# 3. Install Elasticsearch
[root@CentOS ~]# yum -y install elasticsearch
[root@CentOS ~]# systemctl enable elasticsearch.service
[root@CentOS ~]# systemctl start elasticsearch.service

Elasticsearch安装好后,默认的配置文件目录为/etc/elasticsearch,默认的安装目录为/usr/share/elasticsearch,默认的启动端口为9200

测试 Elasticsearch 是否启动成功:

[root@CentOS ~]# curl 'http://localhost:9200/?pretty'
{
  "name" : "hSFoO1h",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "N2LATMb4SMemF99wi3TJGA",
  "version" : {
    "number" : "6.4.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "04711c2",
    "build_date" : "2018-09-26T13:34:09.098244Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

可以在/etc/elasticsearch/elasticsearch.yml配置文件中修改cluster.namenode.namepath.datanetwork.hosthttp.port

2. Windows 安装 Kibana

Kibana让您能够可视化 Elasticsearch 中的数据并操作 Elastic Stack。Kibana 核心搭载了一批经典功能:柱状图、线状图、饼图、旭日图等,它们充分利用了 Elasticsearch 的聚合功能

2.1 安装

参考: https://www.elastic.co/guide/en/kibana/current/windows.html

下载.zip压缩包 https://artifacts.elastic.co/downloads/kibana/kibana-6.4.2-windows-x86_64.zip

假设解压到C:\根目录下,那么C:\kibana-6.4.2-windows-x86_64\bin目录为可执行文件所在的地方,用来启动Kibana或安装插件

2.2 配置

由于我们的 Elasticsearch 安装在远程的CentOS上,所以先要修改 Elasticsearch 的配置文件/etc/elasticsearch/elasticsearch.yml中的network.host,默认只允许本机访问(通过 localhost 或 127.0.0.1),现在Windows主机要访问它的话,能够 ping 通 CentOS上的IP: 192.168.40.128,所以我们要把192.168.40.128添加进去:

# ----------------------------- Network ------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#

network.host: localhost, 192.168.40.128

# 或者允许所有主机访问(危险):
# network.host: 0.0.0.0

然后,再修改 Kibana 的配置文件C:\kibana-6.4.2-windows-x86_64\config\kibana.yml中的elasticsearch.url,指向 Elasticsearch 服务地址:

# The URL of the Elasticsearch instance to use for all your queries.
# elasticsearch.url: "http://localhost:9200"
elasticsearch.url: "http://192.168.40.128:9200"

2.3 启动

打开cmd命令行窗口:

cd C:\kibana-6.4.2-windows-x86_64
.\bin\kibana.bat

然后,在浏览器中输入http://localhost:5601,回车即可

3. 与 Elasticsearch 交互

3.1 Java API

参考: https://www.elastic.co/guide/cn/elasticsearch/guide/current/_talking_to_elasticsearch.html#_java_api

如果你正在使用 Java,可以使用 Elasticsearch 内置的两个客户端:节点客户端(Node client)传输客户端(Transport client),并通过9300端口并使用 Elasticsearch 的原生传输协议和集群交互

3.2 RESTful API with JSON over HTTP

参考: https://www.elastic.co/guide/cn/elasticsearch/guide/current/_talking_to_elasticsearch.html#_restful_api_with_json_over_http

我们可以使用 RESTful API 通过端口 9200 和 Elasticsearch 进行通信,甚至可以使用curl命令来和 Elasticsearch 交互

一个 Elasticsearch 请求和任何 HTTP 请求一样由几部分(下面的命令中<>标记的内容)组成:

curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
  • VERB: 适当的 HTTP 方法 或 谓词 : GETPOSTPUTHEAD 或者 DELETE
  • PROTOCOLhttp 或者 https(如果你在 Elasticsearch 前面有一个 https 代理)
  • HOST: Elasticsearch 集群中任意节点的主机名,或者用 localhost 代表本地机器上的节点
  • PORT: 运行 Elasticsearch HTTP 服务的端口号,默认是 9200
  • PATH: API 的终端路径(例如 _count 将返回集群中文档数量)。PATH 可能包含多个组件,例如:_cluster/stats_nodes/stats/jvm
  • QUERY_STRING: 任意可选的查询字符串参数(例如 ?pretty 将格式化地输出 JSON 返回值,使其更容易阅读)
  • BODY: 一个 JSON 格式的请求体(如果请求需要的话)

例如,计算集群中文档的数量,我们可以用这个:

[root@CentOS ~]# curl -XGET 'http://localhost:9200/_count?pretty' -H 'Content-Type:application/json' -d '
{
    
                                
                            
未经允许不得转载: LIFE & SHARE - 王颜公子 » Elasticsearch 基础入门

分享

作者

作者头像

Madman

如需 Linux / Python 相关问题付费解答,请按如下方式联系我

0 条评论

暂时还没有评论.

专题系列