ELK-初识Elasticsearch

第一篇:初识Elasticsearch

1.安装



Elasticsearch 要求 java8+的环境,推荐使用 Oracle 1.8.0_131版本的JDK。Java JDK的安装此处不做介绍。这里我们使用的5.4.2版本的Elasticsearch。

从elastic网站www.elastic.co/downloads下载,网站上有对于任何一个版本你都可以选择.zip或.tar的压缩文件,DEB或RPM格式的安装包。简单办法是使用tar文件。将tar文件解压到指定文件夹,在文件夹下执行下面命令启动Elasticsearch:

cd elasticsearch-5.4.2/bin

./elasticsearch

如果看到以下格式的信息说明启动成功了:

我们可以在命令行启动Elasticsearch时修改集群和节点的名称:

./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_name

默认情况下Elasticsearch使用9200端口对外提供REST API服务,必要情况下爱可以修改该端口号。

现在我们已经启动一个Elasticsearch节点(集群),下一步就是理解怎么和它通讯。Elasticsearch提供一个非常全面而且强大的REST API,你可以使用API和你的集群交互。通过API可以完成以下工作:

  • 检查集群、节点和索引健康状态、统计信息。
  • 管理你的集群、节点和索引数据及元数据。
  • 对索引执行CRUD(创建、读取、更新和删除)和搜索操作。
  • 执行高级搜索操作(例如分页、排序、过滤、脚本处理、聚合等等)。

2.集群健康



如果我们想对集群进行一个基础的健康检查,查看集群正在干什么,我们可以curl查看(你可以使用任何一个可以发起HTTP/REST请求的工具)。假定我们一直在相同的节点上穹顶Elasticsearch,并且打开了另一个命令行窗口。

检查集群健康状态,我们使用_cat API。你可以在Kibana的console页面运行以下命令:

GET /_cat/health?v

响应结果如图右侧:

我们可以看到名为elasticsearch的集群已经启动并且但是状态为yellow(正常状态为green,这里因为本地只搭建了单节点环境,数据没有副本)。

我们请求集群健康信息时,会获取green、yellow、或red三者中的一种状态。Green表示一切正常(集群功能完全正常),Yellow表示所有的数据都是可用的但是一些副本没有分配(集群功能完全正常),Red表示一些数据因为某种原因无法正常使用。注意,即使集群的状态为Red,它的部分功能还是可以使用的(i.e. 它会从可得到的资源中继续提供搜索请求),但是你应该在数据损失之前你尽快修复问题。

从上面的响应结果中,我们还可以看到集群中一共只有1个节点,具有1个碎片。这是因为我们还没有存放数据。,注意,我们使用的是默认的系群名称(elasticsearch),并且Elasticsearch使用的是单播网络,所以如果在一台机器上启动多个节点是可以被发现的,这样的话你就可以在上面的响应信息中看到更多的节点。

我们还可以使用下面的请求获取节点列表:

GET /_cat/nodes?v

这里我们可以看到我们一个节点名为“J7JVnD6”,这是我们集群中唯一的一个节点。

3.列出所有索引



现在我们来看一眼我们的索引:

执行 GET /_cat/indices?v 响应如下:

从响应结果可以看到我们有一个名为.kiban的索引,大小为3.1kb,这是因为我们这里使用的kibana,自动创建了一个索引。

4.创建一个索引



现在我们创建一个名为“customer”的索引,然后再次列出所有索引:

PUT /customer?pretty GET /_cat/indices?v

可以看到执行创建索引请求时,响应返回了一个json格式的数据。

再次列出所有索引时多了一个名为“customer”的索引,并且其有5个碎片和1个副本(默认),包含0个文件。

你可能也看到“customer”索引的状态也是Yellow状态,回想一下之前的讨论,黄色意味着一些副本还没有分配。这个索引发生的原因是由于Elasticsearch默认创建了这个索引的一个副本。因为我们现在只有一个节点在运行,因此无法分配一个副本(用于高可用性),直到另一个节点连接到集群的时候。一旦该副本被分配到第二个节点上,该索引的健康状态将变为绿色。

5.查询一个文档



我们现在put一些数据到customer索引中,请记住,为了索引文档,必须告诉Elasticsearch数据在该索引中的类型:

我们来索引一个简单类型为"external",ID为1的customer文件到customer索引中去;格式如下:

PUT /customer/external/1?pretty { "name": "John Doe" }

从上面的响应结果可以看到一个新的customer文件被成功的创建到customer索引中,并且类型为external。这个文件还有一个创建时指定的内部ID为1。

Elasticsearch不要求在索引文件之前显示的创建一个索引,在上面的例子中如果customer索引不存在的话Elasticsearch会自动创建customer索引。下面我们来检索一下刚才索引的文件:

GET /customer/external/1?pretty

从上面的响应结果可以看到一个found字段,该字段为true表示我们找到了找到了索引为customer,类型为external,ID为1的文件。_source字段则返回了完整的我们之前索引的JSON文件。如果我们检索一个不存在的文件,例如检索一个ID为2的文件:

GET /customer/external/2?pretty

会得到如下的响应

6.删除一个索引



现在我们删除刚才我们创建的索引,然后再列出所有索引:

DELETE /customer?pretty GET /_cat/indices?v

可以看到customer索引已经被成功删除了。

7.修改数据



Elasticsearch提供准实时的数据处理和搜索功能。默认情况下,你可以在你的对你的数据执行索引、更新、删除操作之后的一个两个延迟(刷新间隔)之后查到预期的搜索结果。这是跟其他平台最大的不同之处,想SQL查询之类的系统在一个事务完成之后立刻就得得到想要的结果。

8.索引/替换 文档



我们前面看到了如何索引一个简单的文档,现在来回顾一下这段命令;

PUT /customer/external/1?pretty { "name": "John Doe" }

同样的上面脚本会将文档索引到customer索引中取,类型为external,ID为1,如果我们再用一个不同的文档执行上面的脚本,Elasticsearch会用着个新文档替换已存在ID为1的文档:

PUT /customer/external/1?pretty { "name": "Jane Doe" }

上面将ID为1的文档从“John Doe” 改为“Jane Doe”.如果我们用一个不同的ID,将会索引一个新文档,并且已经在索引中保存的现有文档保持不变。

PUT /customer/external/2?pretty { "name": "Jane Doe" }

上面索引了一个ID为2的新文档。

索引时,ID部分是可选的,如果不指定,Elasticsearch会生成一个随机的ID来索引该文档。这个Elasticsearch生成的实际ID(或前边例子中我们指定的ID)会作为索引API回调的一部分返回。

下面的例子中展示如何不指明ID来索引文件:

POST /customer/external?pretty { "name": "Jane Doe" }

注意:这个例子中,我们使用的是POST动作还不是PUT,因为我们没有指定一个ID。

9.更新文档



除了能索引和替换文档之外,我们还能更新文档,注意,实际上Elasticsearch并没有引擎下做就地更新。当我们做一个更新操作时,Elasticsearch删除就文档然后一个快照中索引新文档。

下面的例子展示如何更新我们之前的文档(ID为1),将name字段改为“Jane Doe”;

POST /customer/external/1/_update?pretty { "doc": { "name": "Jane Doe" } }

下面的例子展示如何更新我们之前的文档(ID为1),将name字段修改为"Jane Doe",同时添加age字段:

POST /customer/external/1/_update?pretty { "doc": { "name": "Jane Doe", "age": 20 } }

还可以使用简单的脚本来执行更新,下面的例子使用一个脚本吧Age增加5:

POST /customer/external/1/_update?pretty { "script" : "ctx._source.age += 5" }

上面的例子中,ctx._source引用即将更新的源文档。

注意,在撰写本文时,Elasticsearch只支持同时更新一个文档。在将来,Elasticsearch可能会实现通过一个查询条件实现多文档更新功能(就像SQL中UPDATE-WHERE语句一样)。

10.删除文档



删除一个文档相对来说很简单,下面的例子展示如何删除之前customer索引中ID为2的文档:

DELETE /customer/external/2?pretty

通过查看API中的Delete一节,已删除匹配特定查询的所有文档,值得注意的是,直接删除整个索引比删除索引下的所有文档更简单有效。

11.批处理



除了索引、更新和删除删除单个文档之外,Elasticsearch还提供了使用_bulk API 批量执行上述操作的功能。这个功能非常重要,因为它提供了一种非常高效的机制来尽可能快地执行多个操作,尽可能少地进行网络传输。

作为一个简单的例子,下面的脚本可以在一个批量操作中索引两个文档(ID 1 - John Doe and ID 2 - Jane Doe):

POST /customer/external/_bulk?pretty {"index":{"_id":"1"}} {"name": "John Doe" } {"index":{"_id":"2"}} {"name": "Jane Doe" }

下面的例子在一个批量操作中更新了第一个文档然后删除了第二个文档:

POST /customer/external/_bulk?pretty {"update":{"_id":"1"}} {"doc": { "name": "John Doe becomes Jane Doe" } } {"delete":{"_id":"2"}}

注意:上面的删除动作中,因为删除动作没有相应的源文档,只需要提供将删除文档的ID即可。

Bulk API 不会因为其中一个操作的失败而失败,不管任何原因导致一个操作失败,都将继续执行后面的操作。当Bulk API返回时,它会提供每一个动作的状态(以同样的顺序送回来),这时你可以检查每个动作是否失败。

时间: 2024-07-31 07:35:47

ELK-初识Elasticsearch的相关文章

(高版本)ELK(Elasticsearch + Logstash + Kibana)服务服务搭建

一.ELK是什么鬼? ELK实际上是三个工具的集合,Elasticsearch + Logstash + Kibana,这三个工具组合形成了一套实用.易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台. 1. ElasticSearch ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引

elk中elasticsearch安装启动报错

elasticsearch安装之后.启动报错.elasticsearch版本为5.4.1 下载安装: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.1.tar.gz tar zxf elasticsearch-5.4.1.tar.gz mv elasticsearch-5.4.1 /usr/local/elasticsearch cd /usr/local/elasticsearch/ ./

ELK之ElasticSearch 6.4.x安全认证Search Guard6

ELK的安装非常简单,解压稍加配置即能用. 今天的重点是记录ELK的安全认证,ELK安装好后,ElasticSearch是可以直接浏览访问的,非常不安全,Kibana也是一样直接访问web界面无需密码. 这里使用的是开源免费社区版:Search Guard 6插件来做安全认证. 软件版本与环境 ElasticSearch集群3台10.1.1.195 elasticsearch logstash10.1.1.196 elasticsearch 10.1.1.197 elasticsearch ki

Elasticsearch系列---初识Elasticsearch

Elasticsearch是什么? Elasticsearch简称ES,是一个基于Lucene构建的开源.分布式.Restful接口的全文搜索引擎,还是一个分布式文档数据库.天生就是分布式.高可用.可扩展的,可以在很短的时间内存储.搜索和分析大量的数据. 什么是全文搜索? 全文搜索也叫全文检索,是指扫描文章中的每一个词,对每一个词进建立一个索引,指明该词在文章中出现的次数和位置,当前端用户输入的关键词发起查询请求后,搜索引擎就会根据事先建立的索引进行查找,并将查询的结果响应给用户. 这里有两个关

搜索引擎 ElasticSearch 之 步步为营1 【环境搭建&初识ElasticSearch】

1.下载ElasticSearch a.下载Java环境JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html b.下载ElasticSearch压缩包:http://www.elasticsearch.org/overview/elkdownloads/ 2.安装ElasticSearch 首先安装好Java环境,并检查 “我的电脑属性”-->“高级系统设置”-->“高级”

初识Elasticsearch

Elasticsearch是一个高度可扩展的开源的全文搜索和分析引擎,它可以接近实时的快速的存储.搜索.分析大量的数据 基本概念 对es有几个核心概念,开始学习之前理解这些概念将极大的帮助你理解后面的学习 Near Realtime(NRT)--接近实时 elasticsearch 是一个接近实时的搜索平台.通俗的讲就是,从你索引一个文档直到这个文档可被搜索会有一段时间的延迟(一般是1s).个人理解就是你创建了个文档,会有将近1秒的延迟,别人才能搜索到这个文档 Cluster--集群 集群就是一

ELK搭建elasticsearch常见报错

问题一: [2018-01-31T16:27:21,712][WARN ][o.e.b.JNANatives ] unable to install syscall filter: Java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMPandCONFIG_SECCOMP_FILTERcompiledinatorg.elasticsearch.boo

启动elk中elasticsearch服务报错which: no java in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

解决办法: vi /etc/sysconfig/elasticsearch JAVA_HOME=/usr/local/java sudo systemctl restart elasticsearch.service sudo systemctl status elasticsearch.service 原文地址:https://www.cnblogs.com/minseo/p/10451172.html

ELK初识

ELK:三个开源软件简称.Elastic search.Logstash.Kibana. Elastic search:是ELK中的核心组件,主要负责日志的分析以及存储.Logstash:主要用于收集各个节点上的日志,部署在各个节点上.Kibana:主要用于多维度的可视化展示收集到的日志. 一般为了便于收集日志,通常用filebeat作为轻量级的logs shipper,将无数client端的日志以一种轻量级的方式转发并集中日志和文件到ELK stack中,不能很好的支持个性化过滤需求.可采取f

ELK之elasticsearch插件导致filebeat没有上传日志至elasticsearch解决办法

使用filebeat收集nginx发现日志为上传,elasticsearch没有日志,kibana没有展示 查看filebeat日志 日志目录为/var/log/filebeat  下面有多个日志文件,如果在日志文件filebeat没有发现报错信息可以查看 filebeat.1 2 3 4 5 6 7等,发现日志报错如下 2019-06-06T10:43:23.771+0800 ERROR fileset/factory.go:142 Error loading pipeline: Error