调用其API会返回很多信息,例如集群的信息,节点的信息等

  • 检查集群的状态----Restful API说明
1:检查集群状态信息
2:管理集群
3:执行 增删改查 命令
4:执行高级命令
  • Restful API的访问接口
### 下面的API可以在浏览器中查看,也可以使用curl -X GET 命令查看
 
# 显示单台节点的信息
http://192.168.23.10:9200
http://192.168.23.10:9200/?pretty (使用美化的形式查看json数据)
 
# 使用_cat API查询
http://192.168.23.10:9200/_cat (可以查看许多API接口)
例如:http://192.168.23.10:9200/_cat/nodes(节点个数)
例如:http://192.168.23.10:9200/_cat/nodes?v(信息信息)
 
# 使用_cluster API查询
1:stats
2:health
3:state
4:nodes
http://192.168.23.10:9200/_nodes/health
 
 
http://192.168.23.10:9200/_cluster/health
http://192.168.23.10:9200/_cluster/health?pretty

(三)ElasticSearch Plugins 简要介绍

ElasticSearch提供了很多丰富的插件,能够给我们很直观的管理集群和查看集群

  • 安装插件
1:将插件放入插件的目录中,就像PHP一样安装插件, 插件目录在/usr/share/elasticsearch/plugins
 
2:使用plugin命令安装
/usr/share/elasticsearch/bin/plugin ,如果经常使用,可以将插件命令写入环境变量PAHT中
/usr/share/elasticsearch/bin/plugin --help
install Install a plugin
remove Remove a plugin
list List installed plugins
/usr/share/elasticsearch/bin/plugin install --help
 
 
3:安装插件
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
/usr/share/elasticsearch/bin/plugin install license
/usr/share/elasticsearch/bin/plugin install marvel-agent
 
4:在浏览器上就可以访问创建提供的接口
192.168.23.10:9200/_plugin/head
192.168.23.10:9200/_plugin/kopf
  • 手动创建document(文档的数值类型有:字符串,数值,布尔,时间)
1:手动创建index、document
curl -X PUT '192.168.23.10:9200/uplooking/ops/dage?pretty' -d '{"name": "dage", "age": 20}'
{
"_index" : "uplooking",
"_type" : "ops",
"_id" : "dage",
"_version" : 1,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
 
curl -X PUT '192.168.23.10:9200/uplooking/ops/xiaoge?pretty' -d '{"name": "xiaoge", "age": 20}'
{
"_index" : "uplooking",
"_type" : "ops",
"_id" : "xiaoge",
"_version" : 1,
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
 
2:取出通过index取出document
curl -X GET '192.168.23.10:9200/uplooking/ops/xiaoge?pretty'
{
"_index" : "uplooking",
"_type" : "ops",
"_id" : "xiaoge",
"_version" : 1,
"found" : true,
"_source" : {
"name" : "xiaoge",
"age" : 20
}
}
  • 手动修改document
curl -X POST 192.168.23.10:9200/uplooking/ops/xiaoge/_update?pretty -d '{ "doc": {"age": 19} }'
{
"_index" : "uplooking",
"_type" : "ops",
"_id" : "xiaoge",
"_version" : 2,
"found" : true,
"_source" : {
"name" : "xiaoge",
"age" : 19
}
}
  • 手动删除document
curl -X DELETE 192.168.23.10:9200/uplooking/ops/dage?pretty
  • 查看当前的索引
curl -X GET 192.168.23.10:9200/_cat/indices?v
  • 删除索引
curl -X DELETE 192.168.23.10:9200/uplooking
1:使用restful API查询(query DSL)
curl -X GET 192.168.23.10:9200/uplooking/_search?pretty(查询uplooking索引的文档)
curl -X GET 192.168.23.10:9200/_search?pretty (查询所有索引的文档)
 
2:使用rest 查询(filter DSL,速度较快,可以缓存查询结果)
 
curl -X GET '192.168.23.10:9200/uplooking/_search?pretty' -d '{ "query": { "match_all": {}} }'
 
curl -X GET '192.168.23.10:9200/uplooking/_search?pretty' -d '{ "query": { "term": { "age": 20 }} }'
 
curl -X GET '192.168.23.10:9200/uplooking/_search?pretty' -d '{ "query": { "terms": { "age": [19, 20] }} }'
  • 映射和分析 mapping and analysis
# 全key扫描,不要指定查询的key
curl -X GET '192.168.23.10:9200/uplooking/_search?q=20&pretty'
 
# 指定key扫描,指定查询的key
curl -X GET '192.168.23.10:9200/uplooking/_search?q=age:20&pretty'
 
# 使用_mapping查看数值类型
curl -X GET '192.168.23.10:9200/uplooking/_mapping/ops?pretty'
 
# 分析
需要使用分词工具
 
 
  • Logstash 安装(依赖于jruby编译器,因此需要配置Java环境)
1:查看当前的Java JDK版本,是否符合要求,下载的为2.4.4版本,因此满足条件
[root@7 ~]# java -version
openjdk version "1.8.0_65"
 
2:指定JAVA_HOST的环境变量所在路径
编辑/etc/profile.d/java.sh文件,添加
export JAVA_HOME=/usr
. /etc/profile.d/java.sh
 
3:安装java-1.8.0-openjdk-devel.x86_64包
yum install -y java-1.8.0-openjdk-devel.x86_64(这里应该将JDK跟新至最新版本了)
 
4: 下载RPM包,或者配置yum源
①:https://www.elastic.co/downloads/past-releases/logstash-2-4-0
②:https://www.elastic.co/guide/en/logstash/2.4/installing-logstash.html
 
5:安装完毕之后,将其命令添加至PATH中
编辑/etc/profile.d/logstash.sh,添加
export PATH=/opt/logstash/bin:$PATH
. /etc/profile.d/logstash.sh
 
6:logstash的配置文件用于指定插件的运作机制,支持四种插件:input、filter、codec、output,编辑/etc/logstash/conf.d/easy.conf,这里至写了三种插件,filter插件使用其默认值
# 指定数据从哪里来
input {
stdin {}
}
# 指定数据到哪里去
output {
stdout {
codec => rubydebug
}
}
 
 
 
7:检查配置文件是否正确
logstash -f /etc/logstash/conf.d/easy.conf --configtest
 
8:运行logstash
logstash -f /etc/logstash/conf.d/easy.conf
 
9:运行之后,直接在底下输入一条日志数据,让其清洗,返回的应该是json的数据
Oct 3 15:17:21 7 NetworkManager[531]: <info> (enp0s3): device state change: secondaries -> activated (reason 'none') [90 100 0]
{
"message" => "Oct 3 15:17:21 7 NetworkManager[531]: <info> (enp0s3): device state change: secondaries -> activated (reason 'none') [90 100 0]",
"@version" => "1",
"@timestamp" => "2017-10-04T14:31:00.987Z",
"host" => "7"
}
 
10:参考文档
https://www.elastic.co/guide/en/logstash/2.4/index.html
  • Logstash 常用插件介绍
1:input 插件
①:file:监听文件的最后一行,就是tail -f 一样
创建一个/etc/logstash/conf.d/file.conf,内容如下:
input {
file {
# 指明文件路径,这里使用列表的形式,表示可以读取多个文件
path => ["/var/log/messages"]
# 指明类型为system类型
type => "system"
# 指定读取的起始位置,如果"end",将会从文件结尾处开始读取
start_position => "beginning"
}
}
output {
 
stdout {
# 指定编码格式
codec => rubydebug
}
}
# 检查配置文件正确性
logstash -f /etc/logstash/conf.d/file.conf --configtest
 
# 运行logstash
logstash -f /etc/logstash/conf.d/file.conf
 
②:udp:使用udp连接获取数据,必须指明的参数为port,自己监听的端口,host指明监听的地址
首先必须安装collectd程序,collectd是一个守护(daemon)进程,用来定期收集系统和应用程序的性能指标,同时提供了机制,以不同的方式来存储这些指标值,这里将collectd安装在logstash服务器本地。推荐一篇文章:https://linux.cn/article-5252-1.html ,到时候,可以使用Python的多线程多进程模型完成collectd的功能
# 安装collectd
yum install -y collectd
 
# 编辑配置文件
vi /etc/collectd.conf
Hostname "localhost"
打开LoadPlugin network
添加network插件的配置
<Plugin network>
# 指明将数据发送给192.168.23.13的25826端口
<Server "192.168.23.13" "25826">
</Server>
</Plugin>
# 运行collectd
systemctl start collectd.service
 
# 查看
systemctl status collectd.service
 
# 创建/etc/logstash/conf.d/udp.conf,添加内容如下
input {
udp {
# 指明监听的端口
port => 25826
# 指明编码
codec => collectd {}
# 指明由collectd发送的信息都解析
type => "collectd"
}
}
output {
stdout {
# 指定编码格式
codec => rubydebug
}
}
 
# 运行logstash
logstash -f /etc/logstash/conf.d/udp.conf
2:redis插件
从Redis中获得数据,什么是Redis,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。支持redis 通道(channel)和 列表(lists)
3:filter插件:信息有input插件输入,filter插件将信息过滤,清洗,之后再有output插件输出
①:grok插件介绍:清洗文本数据,最常用就是清洗web日志,这个功能Python可以做
grok正则匹配文件:/opt/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-2.0.5/patterns/grok-patterns
grok语法说明:
# 如果是匹配到192.168.23.111 那么就清洗为clientip: 192.168.23.111
COMMONAPACHELOG %{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
 
官方示例:https://www.elastic.co/guide/en/logstash/2.4/plugins-filters-grok.html
# 创建/etc/logstash/conf.d/grok.conf,添加内容如下
input {
file {
# 指明文件路径,这里使用列表的形式,表示可以读取多个文件
path => ["/var/log/httpd/access_log"]
# 指明类型为system类型
type => "system"
# 指定读取的起始位置,如果"end",将会从文件结尾处开始读取
start_position => "end"
}
}
filter {
grok {
# 指定匹配的正则表达式
# match => { "message" => "%{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}" }
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
stdout {
# 指定编码格式
codec => rubydebug
}
}
 
# 检查配置文件
# 运行logstash
 
例如
URIPARM1 [A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]]*
URIPATH1 (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%&_\- ]*)+
URI1 (%{URIPROTO}://)?(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?
NGINXACCESS %{IPORHOST:remote_addr} - (%{USERNAME:user}|-) \[%{HTTPDATE:log_timestamp}\] %{HOSTNAME:http_host} %{WORD:request_method} \"%{URIPATH1:uri}\" \"%{URIPARM1:param}\" %{BASE10NUM:http_status} (?:%{BASE10NUM:body_bytes_sent}|-) \"(?:%{URI1:http_referrer}|-)\" (%{BASE10NUM:upstream_status}|-) (?:%{HOSTPORT:upstream_addr}|-) (%{BASE16FLOAT:upstream_response_time}|-) (%{BASE16FLOAT:request_time}|-) (?:%{QUOTEDSTRING:user_agent}|-) \"(%{IPV4:client_ip}|-)\" \"(%{WORD:x_forword_for}|-)\"

ElasticSearch API 简要介绍的更多相关文章

  1. 简要介绍BASE64、MD5、SHA、HMAC几种方法。

    加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了.     言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书.     ...

  2. Android应用程序窗口(Activity)实现框架简要介绍和学习计划

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8170307 前面我们学习了SurfaceFli ...

  3. ExtJS的4.1新特性简要介绍

    ExtJS的4.1新特性简要介绍 一.动态加载机制 Ext.require动态加载任何类,并且会加载依赖类: 二.新类系统 •类定义:ExtJS4.0以后应入了Ext.define方法,他通过类的字符 ...

  4. SEAndroid安全机制简要介绍和学习计划

    与iOS相比.Android最被人诟病的是其流畅性和安全性. 然而,从4.0開始,Android不遗余力地改善其流畅性. 特别是在即将公布的L版本号中,用ART替换了Dalvik,相信会越来越流畅.至 ...

  5. ElasticSearch实战系列四: ElasticSearch理论知识介绍

    前言 在前几篇关于ElasticSearch的文章中,简单的讲了下有关ElasticSearch的一些使用,这篇文章讲一下有关 ElasticSearch的一些理论知识以及自己的一些见解. 虽然本人是 ...

  6. ActiveMQ学习教程/1.简要介绍与安装

    ActiveMQ学习教程(一)——简要介绍与安装 一.名词: 1.JMS:即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的 ...

  7. Python Elasticsearch api,组合过滤器,term过滤器,正则查询 ,match查询,获取最近一小时的数据

    Python Elasticsearch api   描述:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.下 ...

  8. Windows的SEH机理简要介绍

    1.异常分类 一般来说,我们把Exception分为2类,一类是CPU产生的异常,我们称之为CPU异常(或者硬件异常).另一类为是通过调用RaiseException API产生的软件异常,我们称之为 ...

  9. MLX90640 红外热成像仪测温模块简要介绍说明

    MLX90640 红外热成像仪测温模块简要介绍说明 (1) A 型和 B 型的区别 区别主要有以下几点 视场角不同: A 型为 110*75° , B 型为 55*35° ,通俗一点讲就是 A 型是广 ...

随机推荐

  1. 搭建iSCSI共享IPSAN

    iSCSI(internet SCSI)是一个供硬件设备使用的.可以在IP协议的上层运行的SCSI指令集,这种指令集合可以实现在IP网络上运行SCSI协议,使其能够在诸如高速千兆以太网上进行路由选择. ...

  2. 回文词 (Palindromes,Uva401)

    例题 3-3 回文词 (Palindromes,Uva401) 输入一个字符中,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam.所有 ...

  3. 一个博客萌新的C语言之旅(持续更新中....)

    先更新上一次留下的的C语言练习答案,如下: #include <stdio.h> double mj(double r) { return 3.14*r*r; } int main() { ...

  4. 加法变乘法——第六届蓝桥杯C语言B组(省赛)第六题

    原创 加法变乘法 我们都知道:1+2+3+ ... + 49 = 1225现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如:1+2+3+...+10*11+12+...+27*28+ ...

  5. 数据结构与算法之Stack(栈)——in dart

    用dart 语言实现一个简单的stack(栈).栈的内部用List实现. class Stack<E> { final List<E> _stack; final int ca ...

  6. 虚拟机安装与Linux命令的学习 ——20155215宣言

    一.虚拟机的安装 虚拟机的安装对我来说真可谓是一波三折.打开老师发布的安装教程,简单地浏览了一下,主要步骤都有图文解说.我本来以为这个安装按部就班即可,可哪知道,问题一个接着一个出现. 问题1 在我下 ...

  7. 20155220 2016-2017-2《java程序设计》第三周学习总结

    教材学习内容总结 1.注意java与c语言的区别,在java中,数组是一个对象. 2.了解java.util.Scanner和java.math.BigDecimal这两个标准类 3.System.a ...

  8. 学号20155308 2016-2017-2 《Java程序设计》实验一(Java开发环境的熟悉)实验报告

    学号20155308 2016-2017-2 <Java程序设计>实验一(Java开发环境的熟悉)实验报告 一.实验要求 使用JDK编译.运行简单的Java程序. 使用IDEA 编辑.编译 ...

  9. loj2538 「PKUWC 2018」Slay the Spire

    pkusc 快到了--做点题涨涨 rp. ref我好菜啊QAQ. 可以发现期望只是一个幌子.我们的目的是:对于所有随机的选择方法(一共 \(\binom{2n}{m}\)种),这些选择方法都最优地打出 ...

  10. 如何在makfile中查看变量的值

    在makefile中查看变量的取值是多少应该是一个比较麻烦的问题,但是本大神自己研究出一个十分方便的方法.这个方法十分简单.现在介绍如下 如果在一个十分复杂庞大的makefile文件中,有个地方用到一 ...