Elasticsearch教程(四):安装和使用Elasticsearch-Head插件

虽然我们可以使用curl等客户端工具访问Restful API对Elasticsearch进行操作,但也有一些客户端工具提供对于ElasticSearch更加友好的可视化操作支持,比如elasticsearch-head。所以这篇文章介绍如何安装和使用Elasticsearch-Head。

Elasticsearch-Head概要信息

项目说明
开源/闭源开源
源码管理地址https://github.com/mobz/elasticsearch-head
License类别Apache License 2.0
开发语言Javascript
当前稳定版本5.0.0(2018/4/10)
下载地址:github releasehttps://github.com/mobz/elasticsearch-head/releases

使用方式

早期版本的elasticsearch-head可以直接以插件的方式在Elasticsearch中进行安装,在Elasticsearch 5之后则需要将elasticsearch-head服务单独运行(依赖于Node.js),并且支持Chrome的插件方式或者Docker容器运行方式。

Chrome插件方式

安装地址:https://chrome.google.com/webstore/detail/elasticsearch-head/ffmkiejjmecolpfloofpjologoblkegm/

点击上述Add to Chrome按钮完成安装,然后点击ElasticSearch Head按钮即可在Chrome中使用了

可以看到此时状态显示为:cluster health: not connected(未连接的状态),这是因为我们还没配置ElasticSearch的服务连接,只要把我们之前安装好的ElasticSearch服务地址http://192.168.0.123:9200/填到connect按钮前面的框内,然后点击connect。

因为我是单点的,所以健康度是yellow,黄色不影响使用,红色就要解决。

Node服务方式

准备node环境

Elasticsearch-head插件要求Node.js环境,并且Node.js的版本大于等于6.0。所以需要先看下自己系统里是否已安装node.js,可以使用命令 npm -v 查看,我这边显示是 6.13.4。如果没有安装,需要先行安装。

下载 head插件

接下来,咱们先在GitHub上找到head插件,地址:https://github.com/mobz/elasticsearch-head。咱们将其下载/克隆到服务器上。

需要说明的是,因为前面已经说过elasticsearch 5之后其实elasticsearch-head并不是以插件的方式安装,所以我们不需要把head下载到elasticsearch的/plugins/目录下,自己找个合适的位置存放即可。

下载完成后,进入 elasticsearch-head的目录下,按顺序执行命令:

安装head

这步可能有点慢

启动head

看到Started connect web server on http://localhost:9100,说明head 服务就成功安装,并且正常启动了。

启动后,我们可以通过 http:// localhost :9100 进行访问。

但是,实际安装的过程中可能会遇到问题。

问题

npm ERR! phantomjs-prebuilt@2.1.16 install: node install.js

解决

npm install phantomjs-prebuilt@2.1.16 –ignore-scripts

Elasticsearch简单使用

可以看到我们上一篇文章创建的索引phone也出现了

点击数据浏览,再点击需要查看的索引,就可以查看该索引下的所有记录。

也可以使用它的基本查询和复合查询查询记录

下篇文章介绍复合查询。

0

Elasticsearch教程(三):增删改查初体验

Elasticsearch 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。

所以可以使用postman来测试。

增加一个索引

PUT方式请求 http://192.168.0.123:9200/phone,phone是我要建的索引

服务器返回一个 JSON 对象,里面的acknowledged字段表示操作成功。

这就建好了,看起来很简单。

插入一个记录

在索引phone下存放一个文档,它的类型是apple,文档里有一些属性。

POST方式请求 http:// 192.168.0.123 :9200/phone/apple

请求体里加上我们的数据

返回的 JSON 对象,会给出 Index、Type、Id、Version 等信息。

当然,我们也可以以指定id的方式插入数据, 就像这样http:// 192.168.0.123 :9200/phone/apple/1,这样该条记录的id就是1,但是正常的使用场景中,不指定id会比较好。

注意,如果我们没有创建 Index phone,就直接执行上面的命令插入数据也不会报错,ElasticSearch会直接生成指定的 Index。所以我们在插入数据时要注意 Index 的名称不要写错。

查看记录

根据id查看我们刚刚插入的那条记录,其中 pretty 表示以友好阅读的方式展示结果

GET方式请求 http:// 192.168.0.123 :9200/phone/apple/Q5ci-HABIIllKMiCQFU5?pretty=true

返回结果

更新记录

PUT方式请求 http:// 192.168.0.123 :9200/phone/apple/Q5ci-HABIIllKMiCQFU5

请求体是要更新的内容

返回结果

删除记录

DELETE方式请求 http:// 192.168.0.123 :9200/phone/apple/Q5ci-HABIIllKMiCQFU5

0

Elasticsearch教程(二):Elasticsearch的集群、节点、索引、分片、分组概念

本文将介绍Elasticsearch中的几个基本概念(cluster 、 node 、index、 shard、document、type )。

一、节点和集群(Node 与 Cluster)

ElasticSearch做到了随时可用和按需扩容(垂直扩容和水平扩容)。垂直扩容就是更换性能更强大的服务器,水平扩容就是添加数量更多的服务器。

但是,无论性能多强大,单台服务器的性能总归是有限的,而Elasticsearch天生就是分布式的,使用者无需像使用其它数据库那样花费很大精力、做出很大改动来实现横向扩容,所以更合适的是水平扩容(​为集群添加更多的节点),并且将负载压力和稳定性分散到这些节点中。

1.1 节点和集群概念介绍

一个运行中的Elasticsearch实例称为一个节点(Node),一个或者多个拥有相同cluster.name配置的节点组成一个集群(Cluster),它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布所有的数据。

任何节点都可以成为主节点,主节点通过选举产生, 主节点负责管理集群范围内的所有变更,例如增加、删除索引,或者增加、删除节点等。

作为用户,我们可以将请求发送到集群中的任何节点,包括主节点。每个节点都知道任意文档所处的位置,并且能够将我们的请求直接转发到存储我们所需文档的节点。 无论我们将请求发送到哪个节点,它都能负责从各个包含我们所需文档的节点收集回数据,并将最终结果返回給客户端。

1.2 集群健康

如果你已经按照第一篇文章介绍安装了 Elasticsearch ,那么可以访问/_cluster/health地址,查看集群健康信息。

其中status字段是最重要的,它表示当前集群在总体上是否工作正常。它的三种颜色含义如下:

  • green:所有的主分片和副本分片都正常运行。
  • yellow:所有的主分片都正常运行,但不是所有的副本分片都正常运行。
  • red:有主分片没能正常运行。

二、索引(Index)

Elasticsearch的索引是用来保存相关数据的地方。索引实际上是指向一个或者多个物理分片的逻辑命名空间 。

Index(索引) 是 Elasticsearch 管理 数据的顶层单位 。它是单个数据库的同义词。每个Index(即数据库)的名字必须是小写。

Elastic会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。

创建索引

PUT http://{your ip}:9200/{index name}

这边我原先就创建了一些索引。

/_cat/indices 该地址可以查看当前节点的所有 Index。

三、分片( shard)

一个分片是一个底层的工作单元 ,它仅保存了全部数据中的一部分。

Elasticsearch 是利用分片将数据分发到集群内各处的。分片是数据的容器,文档保存在分片内,分片又被分配到集群内的各个节点里。 当你的集群规模扩大或者缩小时, Elasticsearch 会自动的在各节点中迁移分片,使得数据仍然均匀分布在集群里。

一个分片可以是 主分片或者副本分片。 索引内任意一个文档都归属于一个主分片,所以主分片的数目决定着索引能够保存的最大数据量。

一个副本分片只是一个主分片的拷贝。副本分片作为硬件故障时保护数据不丢失的冗余备份,并为搜索和返回文档等读操作提供服务。

在索引建立的时候就已经确定了主分片数,但是副本分片数可以随时修改。

上面当我们是按默认方式创建了一个索引,默认情况下索引会被分配5个主分片,1个副分片。

当然,也可以通过如下参数来指定分片数、副本数量(注意它是请求时放在requestbody里的)

四、 Type(分组)

Document 可以分组,假设我们有个叫weather的 Index ,那么天气可以按城市分组,也可以按气候分组。这种分组就叫做 Type,它是虚拟的逻辑分组,用来过滤 Document。

不同的 Type 应该有相似的结构(schema),举例来说,id字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如products和logs)应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

/_mapping 该地址可以列出每个 Index 所包含的 Type。

五、 数据(Document)

Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。

Document 使用 JSON 格式表示,下面是一个例子。

{
“user”: “李诞”,
“title”: “脱口秀演员”,
“desc”: “搞笑大师”
}

同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。

六、最后方便理解整理了一个图

+2

Elasticsearch教程(一):Elasticsearch介绍与在Linux CentOS7上使用yum安装

一、简介

Elasticsearch是一个用Java语言编写的开源的搜索引擎,它是建立在全文搜索引擎库 Apache Lucene™ 的基础之上。

Elasticsearch内部使用Lucene做索引与搜索,相比复杂的Lucene,Elasticsearch的全文检索变得非常简单, 因为它提供了一套简单一致的RESTful API。

Elasticsearch作为一个全文搜索引擎。它支持分布式的实时文档存储,每个字段可以被索引与搜索,同时能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。

Elasticsearch把所有的功能都打包成一个单独的服务,方便使用者通过程序与其提供的RESTful API进行通信,使用者可以用任何编程语言实现这个web客户端,甚至直接使用命令行调用API。

Elasticsearch的起步很简单。它预设了一些适当的默认值,并隐藏了复杂的搜索理论知识。真正做到了开箱即用。

当然,这不意味着Elasticsearch的功能就很简单,相反随着对它的了解越深入,就越能惊叹于Elasticsearch的更多高级特性。

很多我们遇到的没遇到的业务场景或难题,都可以从Elasticsearch众多的高级特性中,找到合适的解决方案。它的整个引擎是可配置并且灵活的。

Elasticsearch在Github上的地址:http://github.com/elastic/elasticsearch 。

二、安装

系统:Linux CentOS7

2.1 确认是否安装Java,Elasticsearch最低支持java1.7

以下命令可以查看jdk版本

2.2 使用yum安装Elasticsearch

2.2.1 下载并安装ES的yum公钥

2.2.2 配置Elasticsearch的yum源

输入下面的代码

2.2.3 更新yum的缓存

2.2.4 安装Elasticsearch

2.2 测试Elasticsearch是否安装成功

配置服务

测试访问

看到如上响应说明已经启动并运行一个Elasticsearch节点了。 单个节点可以作为一个运行中的Elasticsearch的实例。 而一个集群是一组拥有相同 cluster.name 的节点, 他们能一起工作并共享数据,还提供容错与可伸缩性。

2.3 设置ip访问、外网访问、修改端口

修改完了重启

systemctl restart elasticsearch

浏览器中输入ip地址和端口访问试试,如果访问被拒绝,添加防火墙设置

0